Fix issues with origin offset
This commit is contained in:
		
							parent
							
								
									454b81bf8e
								
							
						
					
					
						commit
						855adcab13
					
				@ -60,9 +60,9 @@ public class CoordTransform {
 | 
			
		||||
     * Create a new coordinate system converter.
 | 
			
		||||
     * @param axialAxis the OBJ axis that corresponds to the OpenRocket axial (x-)axis
 | 
			
		||||
     * @param forwardAxis the OBJ axis that corresponds to the OpenRocket forward (y-)axis
 | 
			
		||||
     * @param origXOffs the x-offset of the origin of the OBJ coordinate system, <b>in the OBJ coordinate system</b>
 | 
			
		||||
     * @param origYOffs the y-offset of the origin of the OBJ coordinate system, <b>in the OBJ coordinate system</b>
 | 
			
		||||
     * @param origZOffs the z-offset of the origin of the OBJ coordinate system, <b>in the OBJ coordinate system</b>
 | 
			
		||||
     * @param origXOffs the x-offset of the origin of the OBJ coordinate system, <b>in the OpenRocket coordinate system</b>
 | 
			
		||||
     * @param origYOffs the y-offset of the origin of the OBJ coordinate system, <b>in the OpenRocket coordinate system</b>
 | 
			
		||||
     * @param origZOffs the z-offset of the origin of the OBJ coordinate system, <b>in the OpenRocket coordinate system</b>
 | 
			
		||||
     */
 | 
			
		||||
    public static CoordTransform generateUsingLongitudinalAndForwardAxes(Axis axialAxis, Axis forwardAxis,
 | 
			
		||||
                                                                         double origXOffs, double origYOffs, double origZOffs) {
 | 
			
		||||
@ -79,12 +79,13 @@ public class CoordTransform {
 | 
			
		||||
        Axis zAxis = null;
 | 
			
		||||
 | 
			
		||||
        switch (axialAxis) {
 | 
			
		||||
            case X -> xAxis = Axis.X;
 | 
			
		||||
            case X_MIN -> xAxis = Axis.X_MIN;
 | 
			
		||||
            case Y -> yAxis = Axis.X;
 | 
			
		||||
            case Y_MIN -> yAxis = Axis.X_MIN;
 | 
			
		||||
            case Z -> zAxis = Axis.X;
 | 
			
		||||
            case Z_MIN -> zAxis = Axis.X_MIN;
 | 
			
		||||
            // X-axis points from the tip to the bottom, so invert it
 | 
			
		||||
            case X -> xAxis = Axis.X_MIN;
 | 
			
		||||
            case X_MIN -> xAxis = Axis.X;
 | 
			
		||||
            case Y -> yAxis = Axis.X_MIN;
 | 
			
		||||
            case Y_MIN -> yAxis = Axis.X;
 | 
			
		||||
            case Z -> zAxis = Axis.X_MIN;
 | 
			
		||||
            case Z_MIN -> zAxis = Axis.X;
 | 
			
		||||
        }
 | 
			
		||||
        switch (forwardAxis) {
 | 
			
		||||
            case X -> xAxis = Axis.Y;
 | 
			
		||||
@ -109,11 +110,7 @@ public class CoordTransform {
 | 
			
		||||
            throw new IllegalStateException("Axes should not be null");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        final double origXTrans = getTransformedOriginOffset(xAxis, origXOffs, origYOffs, origZOffs);
 | 
			
		||||
        final double origYTrans = getTransformedOriginOffset(yAxis, origXOffs, origYOffs, origZOffs);
 | 
			
		||||
        final double origZTrans = getTransformedOriginOffset(zAxis, origXOffs, origYOffs, origZOffs);
 | 
			
		||||
 | 
			
		||||
        return new CoordTransform(xAxis, yAxis, zAxis, origXTrans, origYTrans, origZTrans);
 | 
			
		||||
        return new CoordTransform(xAxis, yAxis, zAxis, origXOffs, origYOffs, origZOffs);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -179,6 +176,10 @@ public class CoordTransform {
 | 
			
		||||
        return convertLoc(x, y, z, 0, 0, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public FloatTuple convertLocWithoutOriginOffs(Coordinate coordinate) {
 | 
			
		||||
        return convertLoc(coordinate.x, coordinate.y, coordinate.z, 0, 0, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Converts the rotation coordinates from OpenRocket to OBJ coordinates.
 | 
			
		||||
     * @param xRot OpenRocket rotation in radians around the x-axis
 | 
			
		||||
 | 
			
		||||
@ -11,6 +11,6 @@ package net.sf.openrocket.file.wavefrontobj;
 | 
			
		||||
 */
 | 
			
		||||
public class DefaultCoordTransform extends CoordTransform {
 | 
			
		||||
    public DefaultCoordTransform(double rocketLength) {
 | 
			
		||||
        super(Axis.Y, Axis.Z, Axis.X_MIN, 0, 0, rocketLength);
 | 
			
		||||
        super(Axis.Y, Axis.Z, Axis.X_MIN, rocketLength, 0, 0);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -143,7 +143,7 @@ public class ObjUtils {
 | 
			
		||||
     */
 | 
			
		||||
    public static void translateVerticesFromComponentLocation(DefaultObj obj, CoordTransform transformer,
 | 
			
		||||
                                                              int startIdx, int endIdx, Coordinate translation) {
 | 
			
		||||
        FloatTuple translatedLoc = transformer.convertLoc(translation);
 | 
			
		||||
        FloatTuple translatedLoc = transformer.convertLocWithoutOriginOffs(translation);
 | 
			
		||||
        ObjUtils.translateVertices(obj, startIdx, endIdx, translatedLoc.getX(), translatedLoc.getY(), translatedLoc.getZ());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user