POV-RAY代码转换为Python的Vapory



在这里,我正在尝试将一些POV-Ray代码转换为Python。我正在使用 VAPORY 模块。特别是,scale <4/3,1,1>*1.75pigment{ 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 # -----------------------

您可以使用numpy进行向量运算:
python列表[]对应于POV-Ray向量<>
numpy数组支持您想要的标量乘法(*x(

  1. 从列表中创建一个numpy数组
  2. 乘法数组
  3. 将数组转换为列表

喜欢这个:

import numpy as np
print(list(np.array([1,2,3])*2.5)) 

结果:[2.5、5.0、7.5]

最新更新