簡単に言えば、球面上で使用する画像をマップする必要があります。私は数時間これをやろうとしています。 Googleで検索私は適切な解決策を見つけられません(ダムの人に説明されています)。球面上の画像のマッピング
私はこのリンクのコードは https://www.codeproject.com/articles/19712/mapping-images-on-spherical-surfaces-using-cと思っています。しかし(私はすべてが大丈夫だと思う)ジュリアで動作させることができます。
これは、これまでの私のコードです:
image = brightNoise(height,width,seed,rand=true)
arr = Array{Float64}(height,width)
function MapCoordinate(i1, i2,w1,w2,p)
return ((p - i1)/(i2 - i1)) * (w2 - w1) + w1
end
function Rotate(angle, axisA, axisB)
return axisA * cos(angle) - axisB * sin(angle),axisA * sin(angle) + axisB * cos(angle)
end
phi0 = 0.0
phi1 = pi
theta0 = 0.0
theta1 = 2.0*pi
radius = 50
arr = Array{Float64}(height,width)
for i= 1:size(image)[1]
for j= 1:size(image)[2]
#map the angles from image coordinates
theta = MapCoordinate(0.0,width - 1,theta1, theta0, i)
phi = MapCoordinate(0.0,height - 1,phi0,phi1, j)
#find the cartesian coordinates
x = radius * sin(phi) * cos(theta);
y = radius * sin(phi) * sin(theta);
z = radius * cos(phi);
#apply rotation around X and Y axis to reposition the sphere
y,z=Rotate(1.5, y, z);
x,z=Rotate(pi/2, x, z);
#plot only positive points
if (z > 0)
color = image[i,j]
ix = floor(Int64,x)
iy = floor(Int64,y)
arr[ix,iy] = color
println(ix,iy)
end
end
end
image
がちょうどジュリアに発生した黒と白のノイズであるが、私はそれで球をラップする必要があります。
これは、スタックオーバーフローよりもコードレビューに適しているようです。 –