Geolocation utilities now support converting either X axis or Y axis to an angle

This commit is contained in:
Dion Moult
2021-04-03 21:58:35 +11:00
parent 966af5a757
commit 09be170820
2 changed files with 13 additions and 3 deletions
@@ -145,7 +145,7 @@ class SetNorthOffset(bpy.types.Operator):
def execute(self, context):
context.scene.sun_pos_properties.north_offset = -radians(
ifcopenshell.util.geolocation.xy2angle(
ifcopenshell.util.geolocation.xaxis2angle(
context.scene.BIMGeoreferenceProperties.map_conversion.get("XAxisAbscissa").float_value,
context.scene.BIMGeoreferenceProperties.map_conversion.get("XAxisOrdinate").float_value,
)
@@ -94,6 +94,16 @@ def global2local(matrix, eastings, northings, orthogonal_height, x_axis_abscissa
)
# Used for converting the X and Y vectors of the X Axis in IFC geolocation
def xy2angle(x, y):
# Used for converting the X and Y vectors of the X Axis in IFC grid north geolocation
def xaxis2angle(x, y):
return math.degrees(math.atan2(y, x))
# Used for converting the X and Y vectors of the Y Axis in IFC true north geolocation
def yaxis2angle(x, y):
angle = math.degrees(math.atan2(y, x)) - 90
if angle < -180:
angle += 360
elif angle > 180:
angle -= 360
return angle