Skip to content

Commit

Permalink
Merge pull request #29 from madhephaestus/master
Browse files Browse the repository at this point in the history
Unit test to demonstrate #15
  • Loading branch information
miho committed Nov 12, 2016
2 parents 93ce9d0 + 3c765e2 commit bff50ba
Show file tree
Hide file tree
Showing 2 changed files with 296 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
/.nb-gradle/private/
/build/
/.gradle/
/bin/
/.classpath
/.project
293 changes: 293 additions & 0 deletions src/test/java/eu/mihosoft/vrl/v3d/ConcavePolygonExtrusionTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,293 @@
package eu.mihosoft.vrl.v3d;

import static org.junit.Assert.*;

import java.util.ArrayList;
import java.util.Arrays;

import org.junit.Test;

public class ConcavePolygonExtrusionTest {
Vector3d[] helvetica_H={
new Vector3d(2.9375,-21.875,0.0),
new Vector3d(5.90625,-21.875,0.0),
new Vector3d(5.90625,-12.90625,0.0),
new Vector3d(16.65625,-12.90625,0.0),
new Vector3d(16.65625,-21.875,0.0),
new Vector3d(19.609375,-21.875,0.0),
new Vector3d(19.609375,0.0,0.0),
new Vector3d(16.65625,0.0,0.0),
new Vector3d(16.65625,-10.421875,0.0),
new Vector3d(5.90625,-10.421875,0.0),
new Vector3d(5.90625,0.0,0.0),
new Vector3d(2.9375,0.0,0.0)
};
Vector3d[] helvetica_e=new Vector3d[]{
new Vector3d(39.41796875,-8.875,0.0),
new Vector3d(39.41796875,-7.5625,0.0),
new Vector3d(27.02734375,-7.5625,0.0),
new Vector3d(27.0478515625,-7.287675380706787,0.0),
new Vector3d(27.07499885559082,-7.0194525718688965,0.0),
new Vector3d(27.10879135131836,-6.7578325271606445,0.0),
new Vector3d(27.149221420288086,-6.50281286239624,0.0),
new Vector3d(27.1962890625,-6.25439453125,0.0),
new Vector3d(27.25,-6.012578010559082,0.0),
new Vector3d(27.31035041809082,-5.777362823486328,0.0),
new Vector3d(27.377344131469727,-5.548749923706055,0.0),
new Vector3d(27.450977325439453,-5.326737880706787,0.0),
new Vector3d(27.53125,-5.111327648162842,0.0),
new Vector3d(27.6181640625,-4.902519226074219,0.0),
new Vector3d(27.711719512939453,-4.70031213760376,0.0),
new Vector3d(27.811914443969727,-4.504706859588623,0.0),
new Vector3d(27.918750762939453,-4.31570291519165,0.0),
new Vector3d(28.0322265625,-4.133300304412842,0.0),
new Vector3d(28.15234375,-3.9574995040893555,0.0),
new Vector3d(28.279102325439453,-3.7883002758026123,0.0),
new Vector3d(28.412500381469727,-3.6257026195526123,0.0),
new Vector3d(28.552539825439453,-3.4697065353393555,0.0),
new Vector3d(28.69921875,-3.3203125,0.0),
new Vector3d(28.85218620300293,-3.177870988845825,0.0),
new Vector3d(29.011091232299805,-3.042734146118164,0.0),
new Vector3d(29.175939559936523,-2.914902448654175,0.0),
new Vector3d(29.346721649169922,-2.79437518119812,0.0),
new Vector3d(29.5234375,-2.68115234375,0.0),
new Vector3d(29.70609474182129,-2.5752344131469727,0.0),
new Vector3d(29.89468765258789,-2.47662091255188,0.0),
new Vector3d(30.089218139648438,-2.38531231880188,0.0),
new Vector3d(30.289688110351562,-2.3013086318969727,0.0),
new Vector3d(30.49609375,-2.224609375,0.0),
new Vector3d(30.708436965942383,-2.155214786529541,0.0),
new Vector3d(30.926719665527344,-2.0931248664855957,0.0),
new Vector3d(31.150938034057617,-2.038339853286743,0.0),
new Vector3d(31.38109588623047,-1.9908592700958252,0.0),
new Vector3d(31.6171875,-1.9506834745407104,0.0),
new Vector3d(31.859220504760742,-1.917812466621399,0.0),
new Vector3d(32.1071891784668,-1.8922460079193115,0.0),
new Vector3d(32.3610954284668,-1.8739843368530273,0.0),
new Vector3d(32.62093734741211,-1.8630273342132568,0.0),
new Vector3d(32.88671875,-1.859375,0.0),
new Vector3d(33.04119110107422,-1.8603320121765137,0.0),
new Vector3d(33.19523239135742,-1.8632030487060547,0.0),
new Vector3d(33.34885025024414,-1.8679883480072021,0.0),
new Vector3d(33.50203323364258,-1.874687671661377,0.0),
new Vector3d(33.65478515625,-1.88330078125,0.0),
new Vector3d(33.80710983276367,-1.8938281536102295,0.0),
new Vector3d(33.95900344848633,-1.9062695503234863,0.0),
new Vector3d(34.110469818115234,-1.9206249713897705,0.0),
new Vector3d(34.261505126953125,-1.9368945360183716,0.0),
new Vector3d(34.412109375,-1.955078125,0.0),
new Vector3d(34.562286376953125,-1.9751757383346558,0.0),
new Vector3d(34.712032318115234,-1.9971874952316284,0.0),
new Vector3d(34.86134719848633,-2.021113395690918,0.0),
new Vector3d(35.01023483276367,-2.0469532012939453,0.0),
new Vector3d(35.15869140625,-2.07470703125,0.0),
new Vector3d(35.30672073364258,-2.104375123977661,0.0),
new Vector3d(35.45431900024414,-2.1359572410583496,0.0),
new Vector3d(35.60148620605469,-2.1694533824920654,0.0),
new Vector3d(35.74822235107422,-2.2048635482788086,0.0),
new Vector3d(35.89453125,-2.2421875,0.0),
new Vector3d(36.040565490722656,-2.281425714492798,0.0),
new Vector3d(36.18648147583008,-2.322577953338623,0.0),
new Vector3d(36.3322868347168,-2.365644693374634,0.0),
new Vector3d(36.477970123291016,-2.4106252193450928,0.0),
new Vector3d(36.62353515625,-2.45751953125,0.0),
new Vector3d(36.768985748291016,-2.5063281059265137,0.0),
new Vector3d(36.91431427001953,-2.5570507049560547,0.0),
new Vector3d(37.059532165527344,-2.609687566757202,0.0),
new Vector3d(37.204627990722656,-2.664238452911377,0.0),
new Vector3d(37.349609375,-2.720703125,0.0),
new Vector3d(37.49447250366211,-2.7790820598602295,0.0),
new Vector3d(37.639217376708984,-2.8393750190734863,0.0),
new Vector3d(37.78384780883789,-2.9015822410583496,0.0),
new Vector3d(37.92835998535156,-2.965703248977661,0.0),
new Vector3d(38.07275390625,-3.031738519668579,0.0),
new Vector3d(38.21703338623047,-3.0996878147125244,0.0),
new Vector3d(38.36119079589844,-3.169551134109497,0.0),
new Vector3d(38.5052375793457,-3.241328477859497,0.0),
new Vector3d(38.64916229248047,-3.3150198459625244,0.0),
new Vector3d(38.79296875,-3.390625,0.0),
new Vector3d(38.79296875,-0.828125,0.0),
new Vector3d(38.64748001098633,-0.7679101228713989,0.0),
new Vector3d(38.50163650512695,-0.7091405987739563,0.0),
new Vector3d(38.35544967651367,-0.6518164277076721,0.0),
new Vector3d(38.20890808105469,-0.5959375500679016,0.0),
new Vector3d(38.06201171875,-0.54150390625,0.0),
new Vector3d(37.914764404296875,-0.48851561546325684,0.0),
new Vector3d(37.76716613769531,-0.43697261810302734,0.0),
new Vector3d(37.61921691894531,-0.3868749737739563,0.0),
new Vector3d(37.470916748046875,-0.3382226228713989,0.0),
new Vector3d(37.322265625,-0.2910155653953552,0.0),
new Vector3d(37.17325973510742,-0.24525384604930878,0.0),
new Vector3d(37.02390670776367,-0.2009374350309372,0.0),
new Vector3d(36.87419891357422,-0.15806633234024048,0.0),
new Vector3d(36.72414016723633,-0.11664053797721863,0.0),
new Vector3d(36.57373046875,-0.07666005939245224,0.0),
new Vector3d(36.422969818115234,-0.03812490031123161,0.0),
new Vector3d(36.271854400634766,-0.0010350464144721627,0.0),
new Vector3d(36.120391845703125,0.034609485417604446,0.0),
new Vector3d(35.96857452392578,0.06880870461463928,0.0),
new Vector3d(35.81640625,0.1015625,0.0),
new Vector3d(35.663963317871094,0.13279296457767487,0.0),
new Vector3d(35.51132583618164,0.16242186725139618,0.0),
new Vector3d(35.358497619628906,0.19044923782348633,0.0),
new Vector3d(35.20547103881836,0.21687501668930054,0.0),
new Vector3d(35.05224609375,0.24169921875,0.0),
new Vector3d(34.898826599121094,0.2649218738079071,0.0),
new Vector3d(34.74521255493164,0.28654298186302185,0.0),
new Vector3d(34.591407775878906,0.30656251311302185,0.0),
new Vector3d(34.437400817871094,0.3249804973602295,0.0),
new Vector3d(34.283203125,0.3417969048023224,0.0),
new Vector3d(34.128807067871094,0.35701173543930054,0.0),
new Vector3d(33.974220275878906,0.37062501907348633,0.0),
new Vector3d(33.819435119628906,0.38263675570487976,0.0),
new Vector3d(33.66445541381836,0.39304691553115845,0.0),
new Vector3d(33.50927734375,0.4018554985523224,0.0),
new Vector3d(33.353904724121094,0.40906253457069397,0.0),
new Vector3d(33.198341369628906,0.4146679937839508,0.0),
new Vector3d(33.042579650878906,0.4186719059944153,0.0),
new Vector3d(32.886619567871094,0.421074241399765,0.0),
new Vector3d(32.73046875,0.421875,0.0),
new Vector3d(32.34083938598633,0.4161718487739563,0.0),
new Vector3d(31.95945167541504,0.39906248450279236,0.0),
new Vector3d(31.5863094329834,0.3705469071865082,0.0),
new Vector3d(31.22140884399414,0.3306250274181366,0.0),
new Vector3d(30.86474609375,0.279296875,0.0),
new Vector3d(30.516328811645508,0.21656249463558197,0.0),
new Vector3d(30.176151275634766,0.14242182672023773,0.0),
new Vector3d(29.844219207763672,0.05687493830919266,0.0),
new Vector3d(29.520526885986328,-0.04007823020219803,0.0),
new Vector3d(29.205078125,-0.14843763411045074,0.0),
new Vector3d(28.897871017456055,-0.2682032883167267,0.0),
new Vector3d(28.598905563354492,-0.39937523007392883,0.0),
new Vector3d(28.308183670043945,-0.541953444480896,0.0),
new Vector3d(28.02570343017578,-0.6959378719329834,0.0),
new Vector3d(27.75146484375,-0.8613285422325134,0.0),
new Vector3d(27.4854679107666,-1.0381255149841309,0.0),
new Vector3d(27.22771453857422,-1.226328730583191,0.0),
new Vector3d(26.97820281982422,-1.4259381294250488,0.0),
new Vector3d(26.7369327545166,-1.6369538307189941,0.0),
new Vector3d(26.50390625,-1.859375,0.0),
new Vector3d(26.28072166442871,-2.091562509536743,0.0),
new Vector3d(26.06898307800293,-2.3318748474121094,0.0),
new Vector3d(25.86869239807129,-2.580312728881836,0.0),
new Vector3d(25.679845809936523,-2.8368752002716064,0.0),
new Vector3d(25.50244140625,-3.1015625,0.0),
new Vector3d(25.336484909057617,-3.374375104904175,0.0),
new Vector3d(25.18197250366211,-3.6553125381469727,0.0),
new Vector3d(25.03890609741211,-3.9443752765655518,0.0),
new Vector3d(24.907285690307617,-4.241562843322754,0.0),
new Vector3d(24.787109375,-4.546875476837158,0.0),
new Vector3d(24.67837905883789,-4.8603129386901855,0.0),
new Vector3d(24.581092834472656,-5.181875705718994,0.0),
new Vector3d(24.495254516601562,-5.511563301086426,0.0),
new Vector3d(24.420860290527344,-5.8493757247924805,0.0),
new Vector3d(24.35791015625,-6.195313453674316,0.0),
new Vector3d(24.306406021118164,-6.549376010894775,0.0),
new Vector3d(24.266347885131836,-6.911563873291016,0.0),
new Vector3d(24.237735748291016,-7.281876564025879,0.0),
new Vector3d(24.220565795898438,-7.660314083099365,0.0),
new Vector3d(24.21484375,-8.046875,0.0),
new Vector3d(24.220272064208984,-8.445819854736328,0.0),
new Vector3d(24.236560821533203,-8.836405754089355,0.0),
new Vector3d(24.26371192932129,-9.218633651733398,0.0),
new Vector3d(24.301719665527344,-9.592500686645508,0.0),
new Vector3d(24.3505859375,-9.9580078125,0.0),
new Vector3d(24.41031265258789,-10.315155982971191,0.0),
new Vector3d(24.480897903442383,-10.663945198059082,0.0),
new Vector3d(24.56234359741211,-11.004375457763672,0.0),
new Vector3d(24.654647827148438,-11.336445808410645,0.0),
new Vector3d(24.7578125,-11.66015625,0.0),
new Vector3d(24.871835708618164,-11.975507736206055,0.0),
new Vector3d(24.996719360351562,-12.282500267028809,0.0),
new Vector3d(25.132461547851562,-12.581133842468262,0.0),
new Vector3d(25.279064178466797,-12.871407508850098,0.0),
new Vector3d(25.4365234375,-13.153321266174316,0.0),
new Vector3d(25.60484504699707,-13.426876068115234,0.0),
new Vector3d(25.78402328491211,-13.692070960998535,0.0),
new Vector3d(25.974063873291016,-13.948906898498535,0.0),
new Vector3d(26.17496109008789,-14.197383880615234,0.0),
new Vector3d(26.38671875,-14.4375,0.0),
new Vector3d(26.60773277282715,-14.6675386428833,0.0),
new Vector3d(26.83640480041504,-14.885780334472656,0.0),
new Vector3d(27.072736740112305,-15.0922269821167,0.0),
new Vector3d(27.316720962524414,-15.28687572479248,0.0),
new Vector3d(27.568359375,-15.4697265625,0.0),
new Vector3d(27.827655792236328,-15.64078140258789,0.0),
new Vector3d(28.094608306884766,-15.800039291381836,0.0),
new Vector3d(28.369218826293945,-15.947500228881836,0.0),
new Vector3d(28.651485443115234,-16.08316421508789,0.0),
new Vector3d(28.94140625,-16.20703125,0.0),
new Vector3d(29.238985061645508,-16.319101333618164,0.0),
new Vector3d(29.544219970703125,-16.419374465942383,0.0),
new Vector3d(29.85711097717285,-16.50785255432129,0.0),
new Vector3d(30.177658081054688,-16.584531784057617,0.0),
new Vector3d(30.505859375,-16.6494140625,0.0),
new Vector3d(30.841720581054688,-16.70250129699707,0.0),
new Vector3d(31.18523597717285,-16.743789672851562,0.0),
new Vector3d(31.536407470703125,-16.77328109741211,0.0),
new Vector3d(31.89523696899414,-16.790977478027344,0.0),
new Vector3d(32.26171875,-16.796875,0.0),
new Vector3d(32.58949279785156,-16.791561126708984,0.0),
new Vector3d(32.910308837890625,-16.775623321533203,0.0),
new Vector3d(33.22418212890625,-16.74906349182129,0.0),
new Vector3d(33.531097412109375,-16.711875915527344,0.0),
new Vector3d(33.8310546875,-16.6640625,0.0),
new Vector3d(34.124061584472656,-16.60562515258789,0.0),
new Vector3d(34.410118103027344,-16.536561965942383,0.0),
new Vector3d(34.6892204284668,-16.45687484741211,0.0),
new Vector3d(34.961368560791016,-16.366561889648438,0.0),
new Vector3d(35.2265625,-16.265625,0.0),
new Vector3d(35.484806060791016,-16.154062271118164,0.0),
new Vector3d(35.7360954284668,-16.031875610351562,0.0),
new Vector3d(35.980430603027344,-15.899062156677246,0.0),
new Vector3d(36.21781539916992,-15.755624771118164,0.0),
new Vector3d(36.4482421875,-15.6015625,0.0),
new Vector3d(36.67171859741211,-15.436874389648438,0.0),
new Vector3d(36.88824462890625,-15.26156234741211,0.0),
new Vector3d(37.09781265258789,-15.075624465942383,0.0),
new Vector3d(37.30043029785156,-14.879061698913574,0.0),
new Vector3d(37.49609375,-14.671875,0.0),
new Vector3d(37.683475494384766,-14.455507278442383,0.0),
new Vector3d(37.86124801635742,-14.231405258178711,0.0),
new Vector3d(38.029415130615234,-13.999570846557617,0.0),
new Vector3d(38.18797302246094,-13.760001182556152,0.0),
new Vector3d(38.3369140625,-13.5126953125,0.0),
new Vector3d(38.47624969482422,-13.25765609741211,0.0),
new Vector3d(38.60597610473633,-12.994882583618164,0.0),
new Vector3d(38.72609329223633,-12.724374771118164,0.0),
new Vector3d(38.83660125732422,-12.44613265991211,0.0),
new Vector3d(38.9375,-12.16015625,0.0),
new Vector3d(39.02878952026367,-11.86644458770752,0.0),
new Vector3d(39.110469818115234,-11.5649995803833,0.0),
new Vector3d(39.18254089355469,-11.255820274353027,0.0),
new Vector3d(39.24500274658203,-10.938905715942383,0.0),
new Vector3d(39.2978515625,-10.614256858825684,0.0),
new Vector3d(39.341094970703125,-10.281874656677246,0.0),
new Vector3d(39.374725341796875,-9.941757202148438,0.0),
new Vector3d(39.39875030517578,-9.593905448913574,0.0),
new Vector3d(39.41316604614258,-9.238319396972656,0.0)
};



@Test
public void test() {
ArrayList<Vector3d> H_points = new ArrayList<Vector3d>(Arrays.asList(helvetica_H));
ArrayList<Vector3d> e_points = new ArrayList<Vector3d>(Arrays.asList(helvetica_e));

CSG HLetter = Extrude.points(new Vector3d(0, 0, 10), H_points);
CSG eLetter = Extrude.points(new Vector3d(0, 0, 10), e_points);

System.out.println("H number of polygons: "+HLetter.getPolygons().size());
System.out.println("e number of polygons: "+eLetter.getPolygons().size());

CSG simpleUnionOfNonIntersectingBodies = eLetter.union(HLetter);

int numPolysExpected = HLetter.getPolygons().size()+eLetter.getPolygons().size();


System.out.println("Both number of polygons: "+simpleUnionOfNonIntersectingBodies.getPolygons().size());
assertTrue(numPolysExpected == simpleUnionOfNonIntersectingBodies.getPolygons().size());
}

}

0 comments on commit bff50ba

Please sign in to comment.