在这里,我正在尝试将一些POV-Ray代码转换为Python。我正在使用VAPORY模块。尤其是scale <4/3,1,1>*1.75
和pigment{ color rgb<1,1,1>*1.1 }
这部分非常令人困惑。无法弄清楚如何将*1.75
和*1.1
添加到Python代码中。
纯POV射线码:
box { <-0.04,-0.04,0>,< 1.03, 1.04, 0.01>
// 1st layer: White
texture{
pigment{ color rgb<1,1,1>*1.1 }
finish{ phong 1}
} // ------------------------------
// 2nd layer: image_map
texture{
pigment{
image_map{ jpeg "Image_gamma_0.jpg"
// maps an image on the xy plane from <0,0,0> to <1,1,0> (aspect ratio 1:1)
// accepted types: gif, tga, iff, ppm, pgm, png, jpeg, tiff, sys
map_type 0 // 0=planar, 1=spherical, 2=cylindrical, 5=torus
interpolate 2 // 0=none, 1=linear, 2=bilinear, 4=normalized distance
once //
} // end of image_map
} // end of pigment
} // end of texture
scale <4/3,1,1>*1.75
rotate< 0, 0,0>
translate<-1.5,0.1,-2>
} // end of box //
蒸汽代码:
# box with layered textures
box = Box ([-0.04, -0.04, 0], [1.03, 1.04, 0.01],
# 1st layer: White
Texture(
Pigment('color', [0, 0, 1]),
Finish('phong', 1)
), # End of 1st layer ------------------------------
# 2nd layer: image_map
Texture(
Pigment(
ImageMap(
'jpeg',
'"Image_gamma_0.jpg"',
'gamma', 2.0,
'map_type', 0,
'interpolate', 2,
'once'
), # end of image_map
), # end of pigment
), # end of texture
'scale', [4/3, 1, 1],
'translate', [-1.5, 0.1, -2]
) # end of box # -----------------------
答案 0 :(得分:1)
您可以使用numpy
进行矢量操作:
python列表[]对应于POV-Ray
向量<>
numpy
数组支持所需的标量乘法(* x)
numpy
数组像这样:
import numpy as np
print(list(np.array([1,2,3])*2.5))
结果:[2.5、5.0、7.5]