p3he/lines.py

21 lines
722 B
Python
Raw Normal View History

2024-04-04 18:03:47 +00:00
from numba import jit
@jit
2024-04-03 11:20:42 +00:00
def LineIntersection(rX1,rY1,rX2,rY2,rX3,rY3,rX4,rY4):
rX = ( (rX1*rY2-rY1*rX2)*(rX3-rX4)-(rX1-rX2)*(rX3*rY4-rY3*rX4) ) / ( (rX1-rX2)*(rY3-rY4)-(rY1-rY2)*(rX3-rX4) )
rY = ( (rX1*rY2-rY1*rX2)*(rY3-rY4)-(rY1-rY2)*(rX3*rY4-rY3*rX4) ) / ( (rX1-rX2)*(rY3-rY4)-(rY1-rY2)*(rX3-rX4) )
return (rX, rY)
2024-04-04 18:03:47 +00:00
@jit
2024-04-03 11:20:42 +00:00
def cLineIntersection(cA0, cA1, cB0, cB1):
rX, rY = LineIntersection(cA0.real, cA0.imag, cA1.real, cA1.imag, cB0.real, cB0.imag, cB1.real, cB1.imag)
return complex(rX, rY)
2024-04-04 18:03:47 +00:00
@jit
2024-04-03 11:20:42 +00:00
def Between(rA,rB,rN):
2024-04-04 20:00:08 +00:00
return (rA <= rN and rN <= rB) or (rB <= rN and rN <= rA)
2024-04-03 11:20:42 +00:00
2024-04-04 18:03:47 +00:00
@jit
2024-04-03 11:20:42 +00:00
def cBetween(cA,cB,cN):
return Between(cA.real,cB.real,cN.real) and Between(cA.imag,cB.imag,cN.imag)