|
""" |
|
# Copyright 2020 Adobe |
|
# All Rights Reserved. |
|
|
|
# NOTICE: Adobe permits you to use, modify, and distribute this file in |
|
# accordance with the terms of the Adobe license agreement accompanying |
|
# it. |
|
|
|
""" |
|
|
|
import numpy as np |
|
|
|
def area_of_triangle(pts): |
|
|
|
AB = pts[1, :] - pts[0, :] |
|
AC = pts[2, :] - pts[0, :] |
|
|
|
return 0.5 * np.linalg.norm(np.cross(AB, AC)) |
|
|
|
def area_of_polygon(pts): |
|
l = pts.shape[0] |
|
s = 0 |
|
for i in range(1, l-1): |
|
s += area_of_triangle(pts[(0, i, i+1), :]) |
|
return s |
|
|
|
def area_of_signed_triangle(pts): |
|
|
|
AB = pts[1, :] - pts[0, :] |
|
AC = pts[2, :] - pts[0, :] |
|
|
|
return 0.5 * np.cross(AB, AC) |
|
|
|
def area_of_signed_polygon(pts): |
|
l = pts.shape[0] |
|
s = 0 |
|
for i in range(1, l-1): |
|
s += area_of_signed_triangle(pts[(0, i, i+1), :]) |
|
return s |