29 using System.Collections.Generic;
30 using System.Diagnostics;
31 using System.Globalization;
33 using OpenSim.Region.PhysicsModules.SharedBase;
34 using OpenSim.Region.PhysicsModule.ubODEMeshing;
36 public class Vertex : IComparable<Vertex>
42 get {
return vector.X; }
43 set { vector.X = value; }
48 get {
return vector.Y; }
49 set { vector.Y = value; }
54 get {
return vector.Z; }
55 set { vector.Z = value; }
58 public Vertex(
float x,
float y,
float z)
67 float tlength = vector.Length();
70 float mul = 1.0f / tlength;
75 return new Vertex(0f, 0f, 0f);
87 #pragma warning disable 0108
94 v2.X = q.W * q.W * v.X +
95 2f * q.Y * q.W * v.Z -
96 2f * q.Z * q.W * v.Y +
98 2f * q.Y * q.X * v.Y +
99 2f * q.Z * q.X * v.Z -
104 2f * q.X * q.Y * v.X +
106 2f * q.Z * q.Y * v.Z +
107 2f * q.W * q.Z * v.X -
110 2f * q.X * q.W * v.Z -
114 2f * q.X * q.Z * v.X +
115 2f * q.Y * q.Z * v.Y +
117 2f * q.W * q.Y * v.X -
119 2f * q.W * q.X * v.Y -
128 return new Vertex(v1.
X + v2.
X, v1.
Y + v2.
Y, v1.
Z + v2.
Z);
133 return new Vertex(v1.
X - v2.
X, v1.
Y - v2.
Y, v1.
Z - v2.
Z);
138 return new Vertex(v1.
X * v2.
X, v1.
Y * v2.
Y, v1.
Z * v2.
Z);
169 return new Vertex(0f,0f,0f);
171 float mul = 1.0f / am;
177 #pragma warning restore 0108
182 return X * v.X +
Y * v.Y +
Z * v.Z;
197 return new Vertex((
float) Math.Cos(angle), (float) Math.Sin(angle), 0.0f);
202 return vector.Length();
208 float d = diff.Length();
241 return me.CompareTo(other) > 0;
246 return me.CompareTo(other) < 0;
257 NumberFormatInfo nfi =
new NumberFormatInfo();
258 nfi.NumberDecimalSeparator =
".";
259 nfi.NumberDecimalDigits = 6;
261 String s1 = X.ToString(nfi) +
" " +
Y.ToString(nfi) +
" " + Z.ToString(nfi);
281 float _v2x,
float _v2y,
float _v2z,
282 float _v3x,
float _v3y,
float _v3z)
291 NumberFormatInfo nfi =
new NumberFormatInfo();
292 nfi.CurrencyDecimalDigits = 2;
293 nfi.CurrencyDecimalSeparator =
".";
295 String s1 =
"<" + v1.X.ToString(nfi) +
"," +
v1.
Y.ToString(nfi) +
"," + v1.Z.ToString(nfi) +
">";
296 String s2 =
"<" + v2.X.ToString(nfi) +
"," +
v2.
Y.ToString(nfi) +
"," + v2.Z.ToString(nfi) +
">";
297 String s3 =
"<" + v3.X.ToString(nfi) +
"," +
v3.
Y.ToString(nfi) +
"," + v3.Z.ToString(nfi) +
">";
299 return s1 +
";" + s2 +
";" + s3;
314 Vector3 n = Vector3.Cross(e1, e2);
317 float l = n.Length();
337 String output = v1.ToRaw() +
" " +
v2.
ToRaw() +
" " + v3.ToRaw();
static bool operator>(Vertex me, Vertex other)
static Vertex operator+(Vertex v1, Vertex v2)
Triangle(float _v1x, float _v1y, float _v1z, float _v2x, float _v2y, float _v2z, float _v3x, float _v3y, float _v3z)
virtual bool Equals(Vertex v, float tolerance)
override String ToString()
Triangle(Vertex _v1, Vertex _v2, Vertex _v3)
static Vertex operator/(Vertex v1, float am)
static Vertex operator-(Vertex v1, Vertex v2)
int CompareTo(Vertex other)
static Vertex FromAngle(double angle)
Vertex(float x, float y, float z)
OpenSim.Region.ScriptEngine.Shared.LSL_Types.Vector3 vector
static bool operator<(Vertex me, Vertex other)
static Vertex operator*(Vertex v, Quaternion q)