我正在研究Java3D中的一些东西,我知道TransformGroups通常是如何应用缩放...
但是,我正在尝试创建一种基于缩放矢量定义长方体的方法。
所以我有一个单位立方体1,1,1 - > -1,-1,-1,我想手动应用缩放变换。
private static void scaleCoordinates(IndexedQuadArray indexedQuadArray, Vector3d scaleVector) {
//Create scalar transform
Transform3D scalarTransform = new Transform3D();
scalarTransform.setScale(scaleVector);
// retrieve the vertex coordinates
GeometryInfo indexedQuadArrayGeometryInfo = new GeometryInfo(indexedQuadArray);
Point3f coordinatesToScaleArray [] = indexedQuadArrayGeometryInfo.getCoordinates();
// scale each 3d coordinate
for(Point3f coordinate: coordinatesToScaleArray){
scalarTransform.transform(coordinate);
}
// update the indexed quad array with scaled-coordinates.
indexedQuadArray.setCoordinates(0, coordinatesToScaleArray);
}
现在当缩放为正整数时它可以正常工作,但如果我按0.5或负数缩放,则顶点会变得混乱。
任何人都知道什么是错的?我应该能够按小于1的比例进行缩放,也许是因为我不知道的Transform3D.transform(Point3f)而感到高兴。
非常感谢您的阅读!
答案 0 :(得分:0)
我不希望负数运作。当您考虑它时,缩放转换实际上只是一个扩展。因此,使用向量(.5,.6,.7)缩放点(1,1,1)应该为您提供新点(.5,.6,.7)
如果你用负数“缩放”,你就会将你的立方体内外翻出来,各种法线和边缘都是错误的。
您能提供quadArray和您正在使用的scaleVector的顶点列表吗?