Make a separate function for properly determining whether a Poincare point is between two other points.
This commit is contained in:
parent
457f0b9fa0
commit
b5eb207d38
5
draw.py
5
draw.py
@ -1,8 +1,7 @@
|
||||
from cmath import exp
|
||||
|
||||
from constants import I, BLACK
|
||||
from gyro import MobiusInt, MobiusAdd, MobiusDist, cDot, Poincare2Klein
|
||||
from lines import cBetween
|
||||
from gyro import MobiusInt, MobiusAdd, MobiusBetween, MobiusDist, cDot, Poincare2Klein
|
||||
|
||||
from numba import jit, byte, double, prange, optional
|
||||
from numba.types import UniTuple
|
||||
@ -38,7 +37,7 @@ def draw(level,gPlayer,fov,res,dscale):
|
||||
if cDot(rot,MobiusAdd(cInt,-gPlayer.cPos)) > 0:
|
||||
continue
|
||||
rDist = MobiusDist(cInt,gPlayer.cPos) * dscale
|
||||
if j.isFinite and not cBetween(Poincare2Klein(j.pointA),Poincare2Klein(j.pointB),Poincare2Klein(cInt)):
|
||||
if j.isFinite and not MobiusBetween(j.pointA,j.pointB,cInt):
|
||||
continue
|
||||
if m is None:
|
||||
m = DrawnSegment(rDist,j.color)
|
||||
|
6
gyro.py
6
gyro.py
@ -2,7 +2,7 @@ from numba import jit, c16
|
||||
from numba.experimental import jitclass
|
||||
from cmath import sqrt
|
||||
from math import tanh, atanh, pi
|
||||
from lines import cLineIntersection
|
||||
from lines import cLineIntersection, cBetween
|
||||
|
||||
def deg2rad(rA): return rA/180*pi
|
||||
def rad2degd(rA): return rA*180/pi
|
||||
@ -39,6 +39,10 @@ def cDist(cA, cB):
|
||||
def MobiusInt(cA,cB,cC,cD): # Bruh
|
||||
return Klein2Poincare(cLineIntersection(Poincare2Klein(cA),Poincare2Klein(cB),Poincare2Klein(cC),Poincare2Klein(cD)))
|
||||
|
||||
@jit(cache=True)
|
||||
def MobiusBetween(cA,cB,cN):
|
||||
return cBetween(Poincare2Klein(cA),Poincare2Klein(cB),Poincare2Klein(cN))
|
||||
|
||||
@jit(cache=True)
|
||||
def MobiusAdd(cA, cB):
|
||||
return (cA + cB) / (1 + cA.conjugate() * cB)
|
||||
|
Loading…
Reference in New Issue
Block a user