34 assert(NewWidth > 1.0 && NewHeight > 1.0);
51 double length = TempPt.X * TempPt.X + TempPt.Y * TempPt.Y;
64 return (
Vector3fT){.X = TempPt.X, .Y = TempPt.Y, .Z = sqrt(1.0 -
length)};
111 if (Vector3fLength(Perp) >
Epsilon) {
static void click(ArcBall_t *a, const Point2fT *NewPt)
ArcBall_t init_arcBall(double NewWidth, double NewHeight)
static void setBounds(ArcBall_t *a, double NewWidth, double NewHeight)
static Quat4fT drag(ArcBall_t *a, const Point2fT *NewPt)
static Matrix4fT Transform
static Vector3fT mapToSphere(ArcBall_t *a, const Point2fT *NewPt)
static Extype_t length(Exid_t *rhs, Exdisc_t *disc)
static double norm(int n, const double *x)