Vector 两个向量的x、y、z值的所有可能组合?
我在Unity中使用c#(尽管这个问题对任何一个都不特定),需要得到两个向量的所有可能组合: (x,y,z)和(-x,-y,-z) 因此,结果将是: (x,y,z) (-x,y,z) (-x,-y,z) (-x,-y,-z) (x,-y,z) (x,-y,-z) (x,y,-z) (-x,y,-z) 我知道x,y和z。原点在立方体的中心,我只需要得到立方体的x,y,z位置的每个角 我需要得到的要点是:Vector 两个向量的x、y、z值的所有可能组合?,vector,position,combinations,bounds,Vector,Position,Combinations,Bounds,我在Unity中使用c#(尽管这个问题对任何一个都不特定),需要得到两个向量的所有可能组合: (x,y,z)和(-x,-y,-z) 因此,结果将是: (x,y,z) (-x,y,z) (-x,-y,z) (-x,-y,-z) (x,-y,z) (x,-y,-z) (x,y,-z) (-x,y,-z) 我知道x,y和z。原点在立方体的中心,我只需要得到立方体的x,y,z位置的每个角 我需要得到的要点是: 制作这八种组合的最简单、最快、最容易理解的方法是对这八种符号组合进行硬编码: IList<
制作这八种组合的最简单、最快、最容易理解的方法是对这八种符号组合进行硬编码:
IList<int[]> MakeCombinations(int x, int y, int z) {
return new[] {
new[] { x, y, z}
, new[] { x, y, -z}
, new[] { x, -y, z}
, new[] { x, -y, -z}
, new[] {-x, y, z}
, new[] {-x, y, -z}
, new[] {-x, -y, z}
, new[] {-x, -y, -z}
};
}
IList生成组合(intx、inty、intz){
返回新的[]{
新[]{x,y,z}
,新[]{x,y,-z}
,新[]{x,-y,z}
,新[]{x,-y,-z}
,新[]{-x,y,z}
,新[]{-x,y,-z}
,新[]{-x,-y,z}
,新[]{-x,-y,-z}
};
}
如果您更喜欢一个包含更多编程的解决方案,您可以这样做(我使用数组作为向量;您可以使用特定的类):
int[]data=new[]{x,y,z};
IList all=新列表();
对于(int mask=0;mask!=8;mask++){
int[]next=new[]{data[0],data[1],data[2]};
如果((掩码&0x01)!=0)下一步[0]*=-1;
如果((掩码&0x02)!=0)下一步[1]*=-1;
如果((掩码&0x04)!=0)下一步[2]*=-1;
全部。添加(下一步);
}
向量分量前面的加号和减号组合使用单个三位数字
掩码建模。当设置位置N
处的位时,第N
-th分量取负号;否则,用正号表示。制作这八种组合的最简单、最快、最容易理解的方法是硬编码这八种符号组合:
IList<int[]> MakeCombinations(int x, int y, int z) {
return new[] {
new[] { x, y, z}
, new[] { x, y, -z}
, new[] { x, -y, z}
, new[] { x, -y, -z}
, new[] {-x, y, z}
, new[] {-x, y, -z}
, new[] {-x, -y, z}
, new[] {-x, -y, -z}
};
}
IList生成组合(intx、inty、intz){
返回新的[]{
新[]{x,y,z}
,新[]{x,y,-z}
,新[]{x,-y,z}
,新[]{x,-y,-z}
,新[]{-x,y,z}
,新[]{-x,y,-z}
,新[]{-x,-y,z}
,新[]{-x,-y,-z}
};
}
如果您更喜欢一个包含更多编程的解决方案,您可以这样做(我使用数组作为向量;您可以使用特定的类):
int[]data=new[]{x,y,z};
IList all=新列表();
对于(int mask=0;mask!=8;mask++){
int[]next=new[]{data[0],data[1],data[2]};
如果((掩码&0x01)!=0)下一步[0]*=-1;
如果((掩码&0x02)!=0)下一步[1]*=-1;
如果((掩码&0x04)!=0)下一步[2]*=-1;
全部。添加(下一步);
}
向量分量前面的加号和减号组合使用单个三位数字掩码建模。当设置位置N
处的位时,第N
-th分量取负号;否则,将以正号表示