c# – 无法将operator /应用于操作数struct和double
发布时间:2020-12-15 23:45:23 所属栏目:百科 来源:网络整理
导读:我遇到以下代码行的问题: public Vector3 Normalized{ get { return this / this.Length; } } 我收到一个错误: “Operator ‘/’ cannot be applied to operands of type Vector3 and double” 为什么我收到此错误? 这里是整个结构供参考: struct Vector
我遇到以下代码行的问题:
public Vector3 Normalized { get { return this / this.Length; } } 我收到一个错误:
为什么我收到此错误? 这里是整个结构供参考: struct Vector3 { public double x; public double y; public double z; public Vector3(double x,double y,double z) : this() { this.x = x; this.y = y; this.z = z; } public double X { get { return x; } set { x = value; } } public double Y { get { return y; } set { y = value; } } public double Z { get { return z; } set { z = value; } } public static Vector3 operator +(Vector3 vecA,Vector3 vecB) { return new Vector3(vecA.X + vecB.X,vecA.Y + vecB.Y,vecA.Z + vecB.Z); } public static Vector3 operator -(Vector3 vecA,Vector3 vecB) { return new Vector3(vecA.X - vecB.X,vecA.Y - vecB.Y,vecA.Z - vecB.Z); } public static Vector3 operator *(Vector3 vecA,Vector3 vecB) { return new Vector3(vecA.X * vecB.X,vecA.Y * vecB.Y,vecA.Z * vecB.Z); } public static Vector3 operator /(Vector3 vecA,Vector3 vecB) { return new Vector3(vecA.X / vecB.X,vecA.Y / vecB.Y,vecA.Z / vecB.Z); } public double Dot(Vector3 vec) { return (this.X * vec.X + this.Y * vec.Y + this.Z * vec.Z); } public static Vector3 Cross(Vector3 vecA,Vector3 vecB) { return new Vector3(vecA.Y * vecB.Z - vecA.Z * vecB.Y,vecA.Z * vecB.X - vecA.X * vecB.Z,vecA.X * vecB.Y - vecA.Y * vecB.X); } public double Length { get { return Math.Sqrt(X * X + Y * Y + Z * Z); } } public double LengthSq { get { return X * X + Y * Y + Z * Z; } } public Vector3 Normalized { get { return this / this.Length; } } } 解决方法
该struct没有一个将Vector3除以double的运算符.它应该如下所示:
public static Vector3 operator /(Vector3 vecA,double scalar) { return new Vector3(vecA.X / scalar,vecA.Y / scalar,vecA.Z / scalar); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |