Help with aiming from one vec3 to another
Posted: Mon Jun 20, 2022 12:13 pm
I'm trying to "aim" from one vec3 to another, using a rotation vector (yaw, pitch and roll). But I don't get good results...
Where do I mess up?
Where do I mess up?
- Original rotation of the aim?
- Calculation of the angles?
- Problem with degree/radian/cycles?
Code: Select all
<?xml version="1.0" encoding="iso-8859-1" ?>
<ZApplication Name="App" Caption="ZGameEditor application" CameraPosition="-23.4758 4 18.6785" CameraRotation="0 41.143 0" FileVersion="2">
<OnUpdate>
<ZExpression>
<Expression>
<![CDATA[vec3 cubepos = vector3(10,0,5);
vec3 linepos = vector3(2,0,1);
transformCube.Translate = cubepos;
transformLine.Translate = linepos;
// Transform.Rotate / Rotation = Unit of rotation is cycles. one cycle = 360 degrees = 2PI
float yaw = atan2(cubepos.X - linepos.X, cubepos.Z - linepos.Z) / 2*PI;
float pitch = atan2(cubepos.Z - linepos.Z, cubepos.Y - linepos.Y) / 2*PI;
float roll = atan2(cubepos.Y - linepos.Y, cubepos.X - linepos.X) / 2*PI;
vec3 rot = vector3(yaw, pitch, roll);
transformLine.Rotate = rot;
// rotate camera
float t = App.DeltaTime;
t = App.Time / 20;
App.CameraPosition.Y = 4;
App.CameraPosition.X = cos(t * PI*2) * 30;
App.CameraPosition.Z = sin(t * PI*2) * 30;
App.CameraRotation.Y = t - 0.25;]]>
</Expression>
</ZExpression>
</OnUpdate>
<OnRender>
<RenderTransformGroup Name="transformCube" Translate="10 0 5">
<Children>
<RenderSetColor Color="1 1 0 1"/>
<RenderMesh Mesh="CubeMesh"/>
</Children>
</RenderTransformGroup>
<RenderTransformGroup Name="transformLine" Translate="2 0 1" Rotate="0 2.4674 0">
<Children>
<RenderSetColor Color="0 1 1 1"/>
<RenderMesh Mesh="LineMesh"/>
</Children>
</RenderTransformGroup>
<RenderSetColor Color="1 0 0.502 1"/>
<RenderMesh Mesh="AxesMesh"/>
</OnRender>
<Content>
<Mesh Name="CubeMesh">
<Producers>
<MeshBox Scale="0.2 0.2 0.2"/>
</Producers>
</Mesh>
<Mesh Name="LineMesh">
<Producers>
<MeshBox Scale="0.05 0.05 100"/>
<MeshTransform Position="0 0 99.5"/>
<MeshBox Scale="0.05 0.4 0.05"/>
<MeshCombine/>
<MeshBox Scale="0.4 0.05 0.05"/>
<MeshCombine/>
</Producers>
</Mesh>
<Mesh Name="AxesMesh">
<Producers>
<MeshBox Scale="0.02 0.02 100"/>
<MeshBox Scale="0.02 100 0.02"/>
<MeshCombine/>
<MeshBox Scale="100 0.02 0.02"/>
<MeshCombine/>
</Producers>
</Mesh>
</Content>
</ZApplication>