Scale X,Y,Z Coordinates

File: scale_xyz_coordinates.py


#!/usr/bin/python3
# ===================================================================
# Scaling point (x,y,z) coordinates
#
# x0,y0,z0   original point coordinates
# xyzmax     maximum x,y,z value allowed
# ===================================================================

import numpy

def scale_xyz_coordinates(x0,y0,z0,xyzmax):

    max = numpy.abs(x0)
    if numpy.abs(y0) > max:
        max = numpy.abs(y0)
    if numpy.abs(z0) > max:
        max = numpy.abs(z0)

    scale_factor = numpy.abs(xyzmax) / max

    x1 = round(x0 * scale_factor)
    y1 = round(y0 * scale_factor)
    z1 = round(z0 * scale_factor)
    
    ##print()
    ##print(f'scale factor: {scale_factor}')
    ##print(f'max         : {max}')
    ##print(f'xyzmax      : {xyzmax}')
    ##print(f'old x={x0}  newx={x1}')
    ##print(f'old y={y0}  newx={y1}')
    ##print(f'old z={z0}  newx={z1}')

    return (x1,y1,z1)

# -------------------------------------------------------------------
# ---- main
# -------------------------------------------------------------------

if __name__ == '__main__':

    scale_xyz_coordinates(200,400,100,200)
    print('------------------------------------')
    scale_xyz_coordinates(-200,-400,-100,-200)
    print('------------------------------------')
    scale_xyz_coordinates(200,500,800,1000)
    print('------------------------------------')
    scale_xyz_coordinates(500,1000,2000,1000)