daily update on 20240413 by nitload youmu, camera complete
This commit is contained in:
@@ -76,7 +76,7 @@ namespace StgSharp.Graphic
|
||||
return _lookAt;
|
||||
}
|
||||
Matrix44 move = Matrix44.Unit;
|
||||
move.Colum3.vec -= cameraCoord.vec;
|
||||
move.colum3.vec -= cameraCoord.vec;
|
||||
_lookAt = cameraAtt.Transpose * move;
|
||||
_isLookAtAvailable = true;
|
||||
return _lookAt;
|
||||
@@ -112,13 +112,13 @@ namespace StgSharp.Graphic
|
||||
width = Scaler.Abs(GeometryScaler.Tan(fovRadius / 2) * near *2),
|
||||
height = width * size.Y / size.X;
|
||||
|
||||
_projection.Colum0.X = 2 * near / width;
|
||||
_projection.Colum1.Y = 2 * near / height;
|
||||
_projection.Colum2.X = 2 * offsetX / width;
|
||||
_projection.Colum2.Y = 2 * offsetY / height;
|
||||
_projection.Colum2.Z = (far + near) / (near - far);
|
||||
_projection.Colum2.W = -1;
|
||||
_projection.Colum3.Z = 2 * near * far / (near - far);
|
||||
_projection.colum0.X = 2 * near / width;
|
||||
_projection.colum1.Y = 2 * near / height;
|
||||
_projection.colum2.X = 2 * offsetX / width;
|
||||
_projection.colum2.Y = 2 * offsetY / height;
|
||||
_projection.colum2.Z = (far + near) / (near - far);
|
||||
_projection.colum2.W = -1;
|
||||
_projection.colum3.Z = 2 * near * far / (near - far);
|
||||
|
||||
}
|
||||
|
||||
@@ -135,24 +135,71 @@ namespace StgSharp.Graphic
|
||||
|
||||
public void Pitch(Radius r)
|
||||
{
|
||||
_isLookAtAvailable = false;
|
||||
Matrix32 partialCoord = new Matrix32(
|
||||
cameraAtt.Colum1.vec,
|
||||
cameraAtt.Colum2.vec
|
||||
cameraAtt.colum1.vec,
|
||||
cameraAtt.colum2.vec
|
||||
);
|
||||
float angle = -r._radius;
|
||||
Console.WriteLine(angle);
|
||||
Matrix22 rotation = new Matrix22(
|
||||
GeometryScaler.Cos(r), -GeometryScaler.Sin(r),
|
||||
GeometryScaler.Sin(r), -GeometryScaler.Cos(r)
|
||||
Scaler.Cos(angle), -Scaler.Sin(angle),
|
||||
Scaler.Sin(angle), Scaler.Cos( angle)
|
||||
);
|
||||
|
||||
partialCoord *= rotation;
|
||||
cameraAtt.Colum1.vec = partialCoord.colum0.vec;
|
||||
cameraAtt.Colum2.vec = partialCoord.colum1.vec;
|
||||
cameraAtt.colum1.vec = partialCoord.colum0.vec;
|
||||
cameraAtt.colum2.vec = partialCoord.colum1.vec;
|
||||
|
||||
cameraAtt.isTransposed = false;
|
||||
}
|
||||
|
||||
public void Row(Radius r)
|
||||
{
|
||||
_isLookAtAvailable = false;
|
||||
Matrix32 partialCoord = new Matrix32(
|
||||
cameraAtt.colum0.vec,
|
||||
cameraAtt.colum1.vec
|
||||
);
|
||||
float angle = -r._radius;
|
||||
Console.WriteLine(angle);
|
||||
Matrix22 rotation = new Matrix22(
|
||||
Scaler.Cos(angle), -Scaler.Sin(angle),
|
||||
Scaler.Sin(angle), Scaler.Cos(angle)
|
||||
);
|
||||
|
||||
partialCoord *= rotation;
|
||||
cameraAtt.colum0.vec = partialCoord.colum0.vec;
|
||||
cameraAtt.colum1.vec = partialCoord.colum1.vec;
|
||||
|
||||
cameraAtt.isTransposed = false;
|
||||
}
|
||||
|
||||
public void Yaw(Radius r)
|
||||
{
|
||||
_isLookAtAvailable = false;
|
||||
Matrix32 partialCoord = new Matrix32(
|
||||
cameraAtt.colum0.vec,
|
||||
cameraAtt.colum2.vec
|
||||
);
|
||||
float angle = -r._radius;
|
||||
Console.WriteLine(angle);
|
||||
Matrix22 rotation = new Matrix22(
|
||||
Scaler.Cos(angle), -Scaler.Sin(angle),
|
||||
Scaler.Sin(angle), Scaler.Cos(angle)
|
||||
);
|
||||
|
||||
partialCoord *= rotation;
|
||||
cameraAtt.colum0.vec = partialCoord.colum0.vec;
|
||||
cameraAtt.colum2.vec = partialCoord.colum1.vec;
|
||||
|
||||
cameraAtt.isTransposed = false;
|
||||
}
|
||||
|
||||
public void SetViewDirection(vec3d position, vec3d target, vec3d up)
|
||||
{
|
||||
vec3d direction = position - target;
|
||||
if (position == cameraCoord && this.up == up && cameraAtt.Colum2.vec == direction.vec)
|
||||
if (position == cameraCoord && this.up == up && cameraAtt.colum2.vec == direction.vec)
|
||||
{
|
||||
//no difference with precious value
|
||||
return;
|
||||
@@ -176,10 +223,10 @@ namespace StgSharp.Graphic
|
||||
|
||||
vec3d right = Linear.Normalize(Linear.Cross(up,direction));
|
||||
|
||||
cameraAtt.Colum0.vec = right.vec;
|
||||
cameraAtt.Colum1.vec = up.vec;
|
||||
cameraAtt.Colum2.vec = direction.vec;
|
||||
|
||||
cameraAtt.colum0.vec = right.vec;
|
||||
cameraAtt.colum1.vec = up.vec;
|
||||
cameraAtt.colum2.vec = direction.vec;
|
||||
cameraAtt.isTransposed = false;
|
||||
}
|
||||
|
||||
public void DisplayGLtypeDefinition()
|
||||
|
||||
Reference in New Issue
Block a user