mirror of
https://github.com/openbsd/xenocara.git
synced 2025-12-09 02:39:00 +00:00
Bring in some changes from xlock 5.50 to prevent clang from erroring
out on ambiguous overloaded operators. ok matthieu@
This commit is contained in:
@@ -28,7 +28,7 @@ TwoJetVec AddFigureEight(ThreeJetVec p, ThreeJet u, TwoJet v, ThreeJet form, Thr
|
||||
TwoJetVec w = Normalize(Cross(h, du))*(TwoJet(size)*1.1);
|
||||
return RotateZ(
|
||||
TwoJetVec(p) +
|
||||
FigureEight(w, h, du*D(size, 0)*(D(u, 0)^(-1)), form, v),
|
||||
FigureEight(w, h, du*D(size, 0)*(D(u, 0)^((double)-1)), form, v),
|
||||
v*(1./n_strips)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -28,16 +28,16 @@ ThreeJet Param1(ThreeJet x) {
|
||||
double offset = 0;
|
||||
x %= 4;
|
||||
if (x > 2) { x = x+(-2); offset = 2; }
|
||||
if (x <= 1) return x*2 + (x^2)*(-1) + offset;
|
||||
else return (x^2) + x*(-2) + (2 + offset);
|
||||
if (x <= 1) return x*2 + (x^(double)2)*(-1) + offset;
|
||||
else return (x^(double)2) + x*(-2) + (2 + offset);
|
||||
}
|
||||
|
||||
ThreeJet Param2(ThreeJet x) {
|
||||
double offset = 0;
|
||||
x %= 4;
|
||||
if (x > 2) { x = x+(-2); offset = 2; }
|
||||
if (x <= 1) return (x^2) + offset;
|
||||
else return (x^2)*(-1) + x*4 + (-2 + offset);
|
||||
if (x <= 1) return (x^(double)2) + offset;
|
||||
else return (x^(double)2)*(-1) + x*4 + (-2 + offset);
|
||||
}
|
||||
|
||||
static inline ThreeJet TInterp(double x) {
|
||||
@@ -48,7 +48,7 @@ ThreeJet UInterp(ThreeJet x) {
|
||||
x %= 2;
|
||||
if (x > 1)
|
||||
x = x*(-1) + 2;
|
||||
return (x^2)*3 + (x^3) * (-2);
|
||||
return (x^(double)2)*3 + (x^(double)3) * (-2);
|
||||
}
|
||||
|
||||
#define FFPOW 3
|
||||
@@ -59,7 +59,7 @@ ThreeJet FFInterp(ThreeJet x) {
|
||||
x = x*1.06 + -0.05;
|
||||
if (x < 0) return ThreeJet(0, 0, 0);
|
||||
else if (x > 1) return ThreeJet(0, 0, 0) + 1;
|
||||
else return (x ^ (FFPOW-1)) * (FFPOW) + (x^FFPOW) * (-FFPOW+1);
|
||||
else return (x ^ (double)(FFPOW-1)) * (FFPOW) + (x^(double)FFPOW) * (-FFPOW+1);
|
||||
}
|
||||
|
||||
#define FSPOW 3
|
||||
@@ -67,7 +67,7 @@ ThreeJet FSInterp(ThreeJet x) {
|
||||
x %= 2;
|
||||
if (x > 1)
|
||||
x = x*(-1) + 2;
|
||||
return ((x ^ (FSPOW-1)) * (FSPOW) + (x^FSPOW) * (-FSPOW+1)) * (-0.2);
|
||||
return ((x ^ (double)(FSPOW-1)) * (FSPOW) + (x^(double)FSPOW) * (-FSPOW+1)) * (-0.2);
|
||||
}
|
||||
|
||||
ThreeJetVec Stage0(ThreeJet u, ThreeJet v) {
|
||||
|
||||
@@ -63,10 +63,10 @@ ThreeJetVec Normalize(ThreeJetVec v) {
|
||||
|
||||
ThreeJetVec RotateZ(ThreeJetVec v, ThreeJet angle) {
|
||||
ThreeJetVec result;
|
||||
ThreeJet s,c;
|
||||
ThreeJet s, c;
|
||||
s = Sin (angle);
|
||||
c = Cos (angle);
|
||||
result.x = v.x*c + v.y*s;
|
||||
result.x = v.x*c + v.y*s;
|
||||
result.y = v.x*s*-1 + v.y*c;
|
||||
result.z = v.z;
|
||||
return result;
|
||||
@@ -79,13 +79,13 @@ ThreeJetVec RotateY(ThreeJetVec v, ThreeJet angle) {
|
||||
c = Cos (angle);
|
||||
result.x = v.x*c + v.z*s*-1;
|
||||
result.y = v.y;
|
||||
result.z = v.x*s + v.z*c ;
|
||||
result.z = v.x*s + v.z*c;
|
||||
return result;
|
||||
}
|
||||
|
||||
ThreeJetVec RotateX(ThreeJetVec v, ThreeJet angle) {
|
||||
ThreeJetVec result;
|
||||
ThreeJet s,c;
|
||||
ThreeJet s, c;
|
||||
s = Sin (angle);
|
||||
c = Cos (angle);
|
||||
result.x = v.x;
|
||||
@@ -100,5 +100,5 @@ ThreeJetVec InterpolateVec(ThreeJetVec v1, ThreeJetVec v2, ThreeJet weight) {
|
||||
|
||||
ThreeJet Length(ThreeJetVec v)
|
||||
{
|
||||
return (v.x^2 + v.y^2) ^ (.5);
|
||||
return (v.x * v.x + v.y * v.y) ^ (.5);
|
||||
}
|
||||
|
||||
@@ -55,10 +55,10 @@ TwoJetVec Normalize(TwoJetVec v) {
|
||||
|
||||
TwoJetVec RotateZ(TwoJetVec v, TwoJet angle) {
|
||||
TwoJetVec result;
|
||||
TwoJet s,c;
|
||||
TwoJet s, c;
|
||||
s = Sin (angle);
|
||||
c = Cos (angle);
|
||||
result.x = v.x*c + v.y*s;
|
||||
result.x = v.x*c + v.y*s;
|
||||
result.y = v.x*s*-1 + v.y*c;
|
||||
result.z = v.z;
|
||||
return result;
|
||||
@@ -71,13 +71,13 @@ TwoJetVec RotateY(TwoJetVec v, TwoJet angle) {
|
||||
c = Cos (angle);
|
||||
result.x = v.x*c + v.z*s*-1;
|
||||
result.y = v.y;
|
||||
result.z = v.x*s + v.z*c ;
|
||||
result.z = v.x*s + v.z*c;
|
||||
return result;
|
||||
}
|
||||
|
||||
TwoJetVec RotateX(TwoJetVec v, TwoJet angle) {
|
||||
TwoJetVec result;
|
||||
TwoJet s,c;
|
||||
TwoJet s, c;
|
||||
s = Sin (angle);
|
||||
c = Cos (angle);
|
||||
result.x = v.x;
|
||||
@@ -92,5 +92,5 @@ TwoJetVec InterpolateVec(TwoJetVec v1, TwoJetVec v2, TwoJet weight) {
|
||||
|
||||
TwoJet Length(TwoJetVec v)
|
||||
{
|
||||
return (v.x^2 + v.y^2) ^ (.5);
|
||||
return (v.x * v.x + v.y * v.y) ^ (.5);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user