[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gzz-commits] libvob/include/vob geom/Fillets2.hxx vobs/Fille...
From: |
Janne V. Kujala |
Subject: |
[Gzz-commits] libvob/include/vob geom/Fillets2.hxx vobs/Fille... |
Date: |
Tue, 24 Jun 2003 07:51:11 -0400 |
CVSROOT: /cvsroot/libvob
Module name: libvob
Branch:
Changes by: Janne V. Kujala <address@hidden> 03/06/24 07:51:10
Modified files:
include/vob/geom: Fillets2.hxx
include/vob/vobs: Fillet.hxx
Log message:
cut a segment off of the overlapping node
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/libvob/libvob/include/vob/geom/Fillets2.hxx.diff?tr1=1.18&tr2=1.19&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/libvob/libvob/include/vob/vobs/Fillet.hxx.diff?tr1=1.17&tr2=1.18&r1=text&r2=text
Patches:
Index: libvob/include/vob/geom/Fillets2.hxx
diff -u libvob/include/vob/geom/Fillets2.hxx:1.18
libvob/include/vob/geom/Fillets2.hxx:1.19
--- libvob/include/vob/geom/Fillets2.hxx:1.18 Tue Jun 24 07:44:02 2003
+++ libvob/include/vob/geom/Fillets2.hxx Tue Jun 24 07:51:10 2003
@@ -607,5 +607,23 @@
};
+ /** A span of the circular node shape with a segment removed.
+ */
+ struct CircularSliceSpan {
+ const CircularNode &node;
+ float astart;
+ float aend;
+ CircularSliceSpan(const CircularNode &node,
+ float astart, float aend) :
+ node(node), astart(astart), aend(aend) {
+ }
+
+ ZVec point(float fract, ZVec *intern = 0) const {
+ if(intern) *intern = node.ctr - ZVec(0,0,20);
+ return node.ctr + node.r * lerp(dirVec(astart), dirVec(aend),
fract);
+ }
+
+ };
+
}
}
Index: libvob/include/vob/vobs/Fillet.hxx
diff -u libvob/include/vob/vobs/Fillet.hxx:1.17
libvob/include/vob/vobs/Fillet.hxx:1.18
--- libvob/include/vob/vobs/Fillet.hxx:1.17 Tue Jun 24 07:18:34 2003
+++ libvob/include/vob/vobs/Fillet.hxx Tue Jun 24 07:51:10 2003
@@ -363,7 +363,7 @@
<< ab<<" "<<fract<<" "<<va1<<" "<<va2<<
"\n";
if (overlap1)
- renderSpan(CircularNodeSpan(node, a1-w1, a1+w1), 0);
+ renderSpan(CircularSliceSpan(node, a1-w1, a1+w1), 0);
else
renderSpan(
makeLerpFilletSpan(
@@ -373,7 +373,7 @@
);
if (overlap2)
- renderSpan(CircularNodeSpan(node, a2-w2, a2+w2), 0);
+ renderSpan(CircularSliceSpan(node, a2-w2, a2+w2), 0);
else
renderSpan(
makeLerpFilletSpan(
@@ -489,18 +489,18 @@
if(f1.overlaps(f2)) {
if (overlap1)
- renderSpan(CircularNodeSpan(node, a1-w1, a1+w1), 0);
+ renderSpan(CircularSliceSpan(node, a1-w1, a1+w1), 0);
else
renderSpan(makeFilletBlend(f1, f2), 1);
if (overlap2)
- renderSpan(CircularNodeSpan(node, a2-w2, a2+w2), 0);
+ renderSpan(CircularSliceSpan(node, a2-w2, a2+w2), 0);
else
renderSpan(makeFilletBlend(f2, f1), -1);
} else {
if (overlap1)
- renderSpan(CircularNodeSpan(node, a1-w1, a1+w1), 0);
+ renderSpan(CircularSliceSpan(node, a1-w1, a1+w1), 0);
else
renderSpan(f1, 1);
float ta1 = f1.dirTang.atan();
@@ -508,7 +508,7 @@
if(ta2 < ta1) ta2 += 2*M_PI;
renderSpan(CircularNodeSpan(node, ta1, ta2), 1);
if (overlap2)
- renderSpan(CircularNodeSpan(node, a2-w2, a2+w2), 0);
+ renderSpan(CircularSliceSpan(node, a2-w2, a2+w2), 0);
else
renderSpan(f2, -1);
}