├── .gitignore ├── CMakeLists.txt ├── COPYING ├── ChangeLog ├── INSTALL ├── README ├── SISL_4.7_manual.pdf ├── app ├── prog1.c ├── s1013prob.C ├── s1320prob.C ├── s1606prob.C └── surf_surf_int.C ├── cmake └── SISLConfig.cmake.in ├── doc └── manual │ ├── chap_curve_analysis.ilg │ ├── chap_curve_analysis.ind │ ├── chap_curve_analysis.tex │ ├── chap_curve_definition.tex │ ├── chap_curve_interrogation.tex │ ├── chap_curve_utilities.tex │ ├── chap_data_reduction.tex │ ├── chap_error_codes.tex │ ├── chap_intro_abridged.tex │ ├── chap_introduction.tex │ ├── chap_surface_analysis.tex │ ├── chap_surface_definition.tex │ ├── chap_surface_interrogation.tex │ ├── chap_surface_utilities.tex │ ├── foreword.tex │ ├── func │ ├── copyCurve.tex │ ├── copySurface.tex │ ├── freeCurve.tex │ ├── freeIntcrvlist.tex │ ├── freeIntcurve.tex │ ├── freeSurf.tex │ ├── newCurve.tex │ ├── newIntcurve.tex │ ├── newSurf.tex │ ├── newbox.tex │ ├── newdir.tex │ ├── s1001.tex │ ├── s1011.tex │ ├── s1012.tex │ ├── s1013.tex │ ├── s1014.tex │ ├── s1015.tex │ ├── s1016.tex │ ├── s1017.tex │ ├── s1018.tex │ ├── s1021.tex │ ├── s1022.tex │ ├── s1023.tex │ ├── s1024.tex │ ├── s1025.tex │ ├── s1221.tex │ ├── s1225.tex │ ├── s1226.tex │ ├── s1227.tex │ ├── s1231.tex │ ├── s1233.tex │ ├── s1237.tex │ ├── s1238.tex │ ├── s1240.tex │ ├── s1241.tex │ ├── s1242.tex │ ├── s1243.tex │ ├── s1302.tex │ ├── s1303.tex │ ├── s1310.tex │ ├── s1314.tex │ ├── s1315.tex │ ├── s1316.tex │ ├── s1317.tex │ ├── s1318.tex │ ├── s1319.tex │ ├── s1327.tex │ ├── s1328.tex │ ├── s1332.tex │ ├── s1333.tex │ ├── s1334.tex │ ├── s1340.tex │ ├── s1341.tex │ ├── s1342.tex │ ├── s1343.tex │ ├── s1345.tex │ ├── s1346.tex │ ├── s1347.tex │ ├── s1348.tex │ ├── s1356.tex │ ├── s1357.tex │ ├── s1358.tex │ ├── s1360.tex │ ├── s1363.tex │ ├── s1364.tex │ ├── s1365.tex │ ├── s1369.tex │ ├── s1371.tex │ ├── s1372.tex │ ├── s1373.tex │ ├── s1374.tex │ ├── s1375.tex │ ├── s1379.tex │ ├── s1380.tex │ ├── s1383.tex │ ├── s1386.tex │ ├── s1387.tex │ ├── s1388.tex │ ├── s1389.tex │ ├── s1390.tex │ ├── s1391.tex │ ├── s1401.tex │ ├── s1421.tex │ ├── s1422.tex │ ├── s1424.tex │ ├── s1425.tex │ ├── s1436.tex │ ├── s1437.tex │ ├── s1439.tex │ ├── s1440.tex │ ├── s1441.tex │ ├── s1442.tex │ ├── s1443.tex │ ├── s1450.tex │ ├── s1451.tex │ ├── s1452.tex │ ├── s1501.tex │ ├── s1502.tex │ ├── s1503.tex │ ├── s1506.tex │ ├── s1508.tex │ ├── s1510.tex │ ├── s1511.tex │ ├── s1514.tex │ ├── s1515.tex │ ├── s1518.tex │ ├── s1520.tex │ ├── s1522.tex │ ├── s1529.tex │ ├── s1530.tex │ ├── s1534.tex │ ├── s1535.tex │ ├── s1536.tex │ ├── s1537.tex │ ├── s1538.tex │ ├── s1539.tex │ ├── s1542.tex │ ├── s1600.tex │ ├── s1601.tex │ ├── s1602.tex │ ├── s1603.tex │ ├── s1604.tex │ ├── s1606.tex │ ├── s1607.tex │ ├── s1608.tex │ ├── s1609.tex │ ├── s1610.tex │ ├── s1611.tex │ ├── s1613.tex │ ├── s1620.tex │ ├── s1630.tex │ ├── s1706.tex │ ├── s1710.tex │ ├── s1711.tex │ ├── s1712.tex │ ├── s1713.tex │ ├── s1714.tex │ ├── s1715.tex │ ├── s1716.tex │ ├── s1720.tex │ ├── s1730.tex │ ├── s1731.tex │ ├── s1732.tex │ ├── s1733.tex │ ├── s1740.tex │ ├── s1744.tex │ ├── s1745.tex │ ├── s1746.tex │ ├── s1750.tex │ ├── s1774.tex │ ├── s1775.tex │ ├── s1850.tex │ ├── s1851.tex │ ├── s1852.tex │ ├── s1853.tex │ ├── s1854.tex │ ├── s1855.tex │ ├── s1856.tex │ ├── s1857.tex │ ├── s1858.tex │ ├── s1859.tex │ ├── s1860.tex │ ├── s1870.tex │ ├── s1871.tex │ ├── s1920.tex │ ├── s1921.tex │ ├── s1940.tex │ ├── s1953.tex │ ├── s1954.tex │ ├── s1955.tex │ ├── s1957.tex │ ├── s1958.tex │ ├── s1961.tex │ ├── s1962.tex │ ├── s1963.tex │ ├── s1965.tex │ ├── s1966.tex │ ├── s1967.tex │ ├── s1968.tex │ ├── s1986.tex │ ├── s1987.tex │ ├── s1988.tex │ ├── s1989.tex │ ├── s1990.tex │ ├── s1991.tex │ ├── s1992cu.tex │ ├── s1992su.tex │ ├── s2500.tex │ ├── s2502.tex │ ├── s2504.tex │ ├── s2506.tex │ ├── s2508.tex │ ├── s2510.tex │ ├── s2532.tex │ ├── s2536.tex │ ├── s2540.tex │ ├── s2542.tex │ ├── s2544.tex │ ├── s2545.tex │ ├── s2550.tex │ ├── s2553.tex │ ├── s2556.tex │ ├── s2559.tex │ ├── s2562.tex │ ├── s6shadepol.tex │ └── secshade.tex │ ├── licensing_information.tex │ ├── manual.aux │ ├── manual.idx │ ├── manual.ilg │ ├── manual.ind │ ├── manual.log │ ├── manual.pdf │ ├── manual.tex │ ├── manual.toc │ ├── raytracing.pdf │ ├── raytracing.ps │ ├── sample_programs.tex │ ├── sec_box_object.tex │ ├── sec_cone_object.tex │ ├── sec_curve_object.tex │ ├── sec_intcurve_object.tex │ ├── sec_spline_curve.tex │ ├── sec_spline_surface.tex │ ├── sec_surface_object.tex │ ├── sislman.sty │ ├── sislman2.sty │ ├── surf1.fig │ ├── surf1.ps │ ├── titlepage.sty │ ├── type │ ├── SISLBox.tex │ ├── SISLCurve.tex │ ├── SISLDir.tex │ ├── SISLIntcurve.tex │ ├── SISLSurf.tex │ └── test.tex │ └── viewer.tex ├── examples ├── example01.cpp ├── example02.cpp ├── example03.cpp ├── example04.cpp ├── example05.cpp ├── example06.cpp ├── example07.cpp ├── example08.cpp ├── example09.cpp ├── example10.cpp ├── example11.cpp ├── example12.cpp ├── example13.cpp ├── example14.cpp └── example15.cpp ├── include ├── sisl-copyright.h ├── sisl.h └── sislP.h ├── src ├── construct.c ├── crvarctang.c ├── crvcrvtang.c ├── crvlintang.c ├── destruct.c ├── ev_cv_off.c ├── eval_2_crv.c ├── evalcrvarc.c ├── hp_s1880.c ├── intjoinper.c ├── make3D.c ├── makecvkreg.c ├── makesfkreg.c ├── maketracks.c ├── mk_cv_cycl.c ├── newknots.c ├── pickcrvsf.c ├── pocrvtang.c ├── refine_all.c ├── s1001.c ├── s1011.c ├── s1012.c ├── s1013.c ├── s1014.c ├── s1015.c ├── s1016.c ├── s1017.c ├── s1018.c ├── s1021.c ├── s1022.c ├── s1023.c ├── s1024.c ├── s1025.c ├── s1119.c ├── s1161.c ├── s1162.c ├── s1172.c ├── s1173.c ├── s1174.c ├── s1190.c ├── s1192.c ├── s1219.c ├── s1220.c ├── s1221.c ├── s1222.c ├── s1223.c ├── s1224.c ├── s1225.c ├── s1226.c ├── s1227.c ├── s1231.c ├── s1232.c ├── s1233.c ├── s1235.c ├── s1236.c ├── s1237.c ├── s1238.c ├── s1239.c ├── s1240.c ├── s1241.c ├── s1243.c ├── s1244.c ├── s1245.c ├── s1251.c ├── s1252.c ├── s1291.c ├── s1301.c ├── s1302.c ├── s1303.c ├── s1304.c ├── s1305.c ├── s1306.c ├── s1307.c ├── s1308.c ├── s1309.c ├── s1310.c ├── s1311.c ├── s1312.c ├── s1313.c ├── s1314.c ├── s1315.c ├── s1316.c ├── s1317.c ├── s1318.c ├── s1319.c ├── s1320.c ├── s1321.c ├── s1322.c ├── s1323.c ├── s1324.c ├── s1325.c ├── s1326.c ├── s1327.c ├── s1328.c ├── s1329.c ├── s1330.c ├── s1331.c ├── s1332.c ├── s1333.c ├── s1333count.c ├── s1333cycli.c ├── s1334.c ├── s1339.c ├── s1340.c ├── s1341.c ├── s1342.c ├── s1343.c ├── s1345.c ├── s1346.c ├── s1347.c ├── s1348.c ├── s1349.c ├── s1350.c ├── s1351.c ├── s1352.c ├── s1353.c ├── s1354.c ├── s1355.c ├── s1356.c ├── s1357.c ├── s1358.c ├── s1359.c ├── s1360.c ├── s1361.c ├── s1362.c ├── s1363.c ├── s1364.c ├── s1365.c ├── s1366.c ├── s1367.c ├── s1369.c ├── s1370.c ├── s1371.c ├── s1372.c ├── s1373.c ├── s1374.c ├── s1375.c ├── s1376.c ├── s1377.c ├── s1378.c ├── s1379.c ├── s1380.c ├── s1381.c ├── s1382.c ├── s1383.c ├── s1384.c ├── s1385.c ├── s1386.c ├── s1387.c ├── s1388.c ├── s1389.c ├── s1390.c ├── s1391.c ├── s1393.c ├── s1399.c ├── s1401.c ├── s1421.c ├── s1422.c ├── s1424.c ├── s1425.c ├── s1435.c ├── s1436.c ├── s1437.c ├── s1438.c ├── s1439.c ├── s1440.c ├── s1450.c ├── s1451.c ├── s1452.c ├── s1500.c ├── s1501.c ├── s1502.c ├── s1503.c ├── s1504.c ├── s1505.c ├── s1506.c ├── s1507.c ├── s1508.c ├── s1510.c ├── s1511.c ├── s1512.c ├── s1513.c ├── s1514.c ├── s1515.c ├── s1516.c ├── s1517.c ├── s1518.c ├── s1520.c ├── s1521.c ├── s1522.c ├── s1528.c ├── s1529.c ├── s1530.c ├── s1531.c ├── s1534.c ├── s1535.c ├── s1536.c ├── s1537.c ├── s1538.c ├── s1539.c ├── s1540.c ├── s1541.c ├── s1542.c ├── s1600.c ├── s1601.c ├── s1602.c ├── s1603.c ├── s1604.c ├── s1605.c ├── s1606.c ├── s1607.c ├── s1608.c ├── s1609.c ├── s1611.c ├── s1612.c ├── s1613.c ├── s1613bez.c ├── s1614.c ├── s1615.c ├── s1616.c ├── s1617.c ├── s1618.c ├── s1619.c ├── s1620.c ├── s1630.c ├── s1631.c ├── s1700.c ├── s1701.c ├── s1705.c ├── s1706.c ├── s1707.c ├── s1708.c ├── s1710.c ├── s1711.c ├── s1712.c ├── s1713.c ├── s1714.c ├── s1715.c ├── s1716.c ├── s1720.c ├── s1730.c ├── s1731.c ├── s1732.c ├── s1733.c ├── s1741.c ├── s1750.c ├── s1753.c ├── s1754.c ├── s1755.c ├── s1770.c ├── s17702d.c ├── s1771.c ├── s1772.c ├── s1773.c ├── s1774.c ├── s1775.c ├── s1780.c ├── s1785.c ├── s1786.c ├── s1787.c ├── s1788.c ├── s1789.c ├── s1790.c ├── s1791.c ├── s1792.c ├── s1795.c ├── s1796.c ├── s1797.c ├── s1830.c ├── s1834.c ├── s1839.c ├── s1840.c ├── s1850.c ├── s1851.c ├── s1852.c ├── s1853.c ├── s1854.c ├── s1855.c ├── s1856.c ├── s1857.c ├── s1858.c ├── s1859.c ├── s1860.c ├── s1870.c ├── s1871.c ├── s1880.c ├── s1890.c ├── s1891.c ├── s1893.c ├── s1894.c ├── s1896.c ├── s1897.c ├── s1900.c ├── s1901.c ├── s1902.c ├── s1903.c ├── s1904.c ├── s1905.c ├── s1906.c ├── s1907.c ├── s1908.c ├── s1909.c ├── s1910.c ├── s1911.c ├── s1912.c ├── s1916.c ├── s1917.c ├── s1918.c ├── s1919.c ├── s1920.c ├── s1921.c ├── s1924.c ├── s1925.c ├── s1926.c ├── s1927.c ├── s1930.c ├── s1931.c ├── s1931unit.c ├── s1932.c ├── s1933.c ├── s1934.c ├── s1935.c ├── s1936.c ├── s1937.c ├── s1938.c ├── s1940.c ├── s1941.c ├── s1942.c ├── s1943.c ├── s1944.c ├── s1945.c ├── s1946.c ├── s1947.c ├── s1948.c ├── s1949.c ├── s1950.c ├── s1951.c ├── s1953.c ├── s1954.c ├── s1955.c ├── s1956.c ├── s1957.c ├── s1958.c ├── s1959.c ├── s1960.c ├── s1961.c ├── s1962.c ├── s1963.c ├── s1965.c ├── s1966.c ├── s1967.c ├── s1968.c ├── s1986.c ├── s1987.c ├── s1988.c ├── s1989.c ├── s1990.c ├── s1991.c ├── s1992.c ├── s1993.c ├── s1994.c ├── s2500.c ├── s2501.c ├── s2502.c ├── s2503.c ├── s2504.c ├── s2505.c ├── s2506.c ├── s2507.c ├── s2508.c ├── s2509.c ├── s2510.c ├── s2511.c ├── s2512.c ├── s2513.c ├── s2514.c ├── s2515.c ├── s2516.c ├── s2532.c ├── s2533.c ├── s2534.c ├── s2535.c ├── s2536.c ├── s2540.c ├── s2541.c ├── s2542.c ├── s2543.c ├── s2544.c ├── s2545.c ├── s2550.c ├── s2551.c ├── s2553.c ├── s2554.c ├── s2555.c ├── s2556.c ├── s2557.c ├── s2558.c ├── s2559.c ├── s2560.c ├── s2561.c ├── s2562.c ├── s6addcurve.c ├── s6affdist.c ├── s6ang.c ├── s6angle.c ├── s6bezpowsf.c ├── s6castelja.c ├── s6chpar.c ├── s6crss.c ├── s6crvature.c ├── s6crvcheck.c ├── s6curvrad.c ├── s6decomp.c ├── s6degnorm.c ├── s6dertopt.c ├── s6diff.c ├── s6dist.c ├── s6dline.c ├── s6dplane.c ├── s6drawseq.c ├── s6equal.c ├── s6err.c ├── s6existbox.c ├── s6findfac.c ├── s6fndintv.c ├── s6herm.c ├── s6herm_bez.c ├── s6idcon.c ├── s6idcpt.c ├── s6idedg.c ├── s6identify.c ├── s6idget.c ├── s6idint.c ├── s6idklist.c ├── s6idkpt.c ├── s6idlis.c ├── s6idnpt.c ├── s6idput.c ├── s6inv4.c ├── s6invert.c ├── s6knotmult.c ├── s6length.c ├── s6line.c ├── s6lprj.c ├── s6lufacp.c ├── s6lusolp.c ├── s6metric.c ├── s6move.c ├── s6multsfs.c ├── s6mulvec.c ├── s6mvec.c ├── s6newbox.c ├── s6norm.c ├── s6nullspace.c ├── s6ratder.c ├── s6rotax.c ├── s6rotmat.c ├── s6schoen.c ├── s6scpr.c ├── s6sortpar.c ├── s6sratder.c ├── s6strider.c ├── s6takunion.c ├── s6testimpl.c ├── s6twonorm.c ├── s9adsimp.c ├── s9adstep.c ├── s9boundimp.c ├── s9boundit.c ├── s9clipimp.c ├── s9clipit.c ├── s9conmarch.c ├── s9iterate.c ├── s9iterimp.c ├── s9smplknot.c ├── s9surmarch.c ├── sh1260.c ├── sh1261.c ├── sh1262.c ├── sh1263.c ├── sh1365.c ├── sh1369.c ├── sh1371.c ├── sh1372.c ├── sh1373.c ├── sh1374.c ├── sh1375.c ├── sh1460.c ├── sh1461.c ├── sh1462.c ├── sh1463.c ├── sh1464.c ├── sh1465.c ├── sh1466.c ├── sh1467.c ├── sh1502.c ├── sh1503.c ├── sh1510.c ├── sh1511.c ├── sh1761.c ├── sh1762.c ├── sh1779.c ├── sh1779_at.c ├── sh1780.c ├── sh1780_at.c ├── sh1781.c ├── sh1781_at.c ├── sh1782.c ├── sh1783.c ├── sh1784.c ├── sh1786.c ├── sh1787.c ├── sh1790.c ├── sh1794.c ├── sh1795.c ├── sh1830.c ├── sh1831.c ├── sh1834.c ├── sh1839.c ├── sh1850.c ├── sh1851.c ├── sh1852.c ├── sh1853.c ├── sh1854.c ├── sh1855.c ├── sh1856.c ├── sh1857.c ├── sh1858.c ├── sh1859.c ├── sh1860.c ├── sh1870.c ├── sh1871.c ├── sh1922.c ├── sh1923.c ├── sh1924.c ├── sh1925.c ├── sh1926.c ├── sh1927.c ├── sh1928.c ├── sh1929.c ├── sh1930.c ├── sh1992.c ├── sh1993.c ├── sh1994.c ├── sh6clvert.c ├── sh6comedg.c ├── sh6condir.c ├── sh6connect.c ├── sh6count.c ├── sh6cvvert.c ├── sh6degen.c ├── sh6disconn.c ├── sh6edgpnt.c ├── sh6edgred.c ├── sh6evalint.c ├── sh6floop.c ├── sh6fndsplt.c ├── sh6getgeom.c ├── sh6getlist.c ├── sh6getmain.c ├── sh6getnbrs.c ├── sh6getnext.c ├── sh6getothr.c ├── sh6getprev.c ├── sh6getsegdiv.c ├── sh6gettop.c ├── sh6idaledg.c ├── sh6idcon.c ├── sh6idfcros.c ├── sh6idget.c ├── sh6idkpt.c ├── sh6idlis.c ├── sh6idnpt.c ├── sh6idnwun.c ├── sh6idput.c ├── sh6idrcros.c ├── sh6idsplit.c ├── sh6idunite.c ├── sh6insert.c ├── sh6inspnt.c ├── sh6iscnect.c ├── sh6ishelp.c ├── sh6isinsid.c ├── sh6ismain.c ├── sh6nmbhelp.c ├── sh6nmbmain.c ├── sh6ptobj.c ├── sh6ptouchp.c ├── sh6putsing.c ├── sh6red.c ├── sh6remcon.c ├── sh6rempnt.c ├── sh6sepcrv.c ├── sh6setcnsd.c ├── sh6setdir.c ├── sh6setseg.c ├── sh6settop.c ├── sh6spltgeo.c ├── sh6tohelp.c ├── sh6tomain.c ├── sh6topohlp.c ├── sh6trmlist.c ├── sh_1d_div.c ├── sh_div_crv.c ├── sh_set_at.c ├── shape.c ├── shcheckput.c ├── shchecktyp.c ├── shcsfsing.c ├── shdivsurf.c ├── shevalc.c ├── shmkhlppts.c ├── shsing.c ├── spli_silh.c └── tstcyclknt.c ├── streaming ├── include │ └── GoReadWrite.h └── src │ └── GoReadWrite.cpp └── viewer ├── include ├── aux2.h ├── gl_aux.h ├── glutils.h ├── jonvec.h ├── mouse.h ├── sisl_aux.h └── transfutils.h ├── sisl_view_demo.cpp └── src ├── aux2.cpp ├── gl_aux.cpp ├── glutils.cpp ├── mouse.cpp ├── sisl_aux.cpp └── transfutils.cpp /.gitignore: -------------------------------------------------------------------------------- 1 | doc/html 2 | -------------------------------------------------------------------------------- /ChangeLog: -------------------------------------------------------------------------------- 1 | 2021-03-16 Vibeke Skytt 2 | * Released version 4.7 of SISL. The main updates are related to 3 | documentation. 4 | 5 | 2013-06-06 Jan Thomassen 6 | * Released version 4.6.0 of SISL. 7 | * Updated license to dual license: GNU Affero GPL 3 or 8 | commercial 9 | * Fixed a number of bugs. 10 | 11 | 16.9.2010 Jan Thomassen 12 | * Released version 4.5.0 of SISL. This is a minor update from the 13 | previous version. 14 | * Changed building system to CMake. 15 | * Fixed a number of bugs. 16 | 17 | 3.2.2005 18 | * Released version 4.4 of SISL. 19 | -------------------------------------------------------------------------------- /INSTALL: -------------------------------------------------------------------------------- 1 | Installation Instructions 2 | ************************* 3 | 4 | This package uses CMake to generate a Makefile (on Linux) or 5 | MS Visual Studio project file (on Windows). 6 | 7 | For information on using CMake, see www.cmake.org. 8 | 9 | A more extensive guide on how to compile and link the SISL library and 10 | applications build upon it can be found in the reference manual. 11 | 12 | -------------------------------------------------------------------------------- 13 | 14 | LINUX 15 | 16 | As a Quick Start Guide, on Linux, make a build directory inside the source 17 | directory 18 | $ cd 19 | $ mkdir build 20 | $ cd build 21 | 22 | Run the cmake program to setup the build process, selecting Debug or Release 23 | as build type, optionally selecting a local install folder: 24 | $ cmake .. -DCMAKE_BUILD_TYPE=Release (-DCMAKE_INSTALL_PREFIX=$HOME/install) 25 | 26 | For a gui-like cmake interface use ccmake (from cmake-ncurses-gui). 27 | 28 | Build the library: 29 | $ make 30 | 31 | Install the library to a local folder (requires the use of 32 | -DCMAKE_INSTALL_PREFIX with a local folder in the previous step): 33 | $ make install 34 | 35 | If the -DCMAKE_INSTALL_PREFIX in the cmake step was omitted or was set to a 36 | system folder (like /usr/local) the user needs elevated privileges to install 37 | the library: 38 | $ sudo make install 39 | 40 | -------------------------------------------------------------------------------- 41 | 42 | WINDOWS 43 | 44 | On Windows, add a new build folder somewhere. Start the CMake 45 | executable and fill in the paths to the source and build folders. When 46 | you run CMake, a Visual Studio project solution file will be generated 47 | in the build folder. 48 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | SISL is a comprehensive NURBS library for the modeling and 2 | interrogation of curves and surfaces. It is implemented in C. 3 | 4 | This software was written by the Geometry Group at SINTEF Digital, 5 | Department of Mathematics and Cybernethics. 6 | 7 | Requirements: 8 | * CMake 9 | www.cmake.org 10 | 11 | For information on installation, see the INSTALL file. 12 | 13 | Good luck! 14 | 15 | 16 | -------------------------------------------------------------------------------- /SISL_4.7_manual.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SINTEF-Geometry/SISL/c9405f5e9a6fd591538094b07d5ba53b7a2d5f3e/SISL_4.7_manual.pdf -------------------------------------------------------------------------------- /app/s1013prob.C: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 1998, 2000-2007, 2010, 2011, 2012, 2013 SINTEF Digital, 3 | * Applied Mathematics, Norway. 4 | * 5 | * Contact information: E-mail: tor.dokken@sintef.no 6 | * SINTEF Digital, Department of Mathematics and Cybernetics, 7 | * P.O. Box 124 Blindern, 8 | * 0314 Oslo, Norway. 9 | * 10 | * This file is part of SISL. 11 | * 12 | * SISL is free software: you can redistribute it and/or modify 13 | * it under the terms of the GNU Affero General Public License as 14 | * published by the Free Software Foundation, either version 3 of the 15 | * License, or (at your option) any later version. 16 | * 17 | * SISL is distributed in the hope that it will be useful, 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | * GNU Affero General Public License for more details. 21 | * 22 | * You should have received a copy of the GNU Affero General Public 23 | * License along with SISL. If not, see 24 | * . 25 | * 26 | * In accordance with Section 7(b) of the GNU Affero General Public 27 | * License, a covered work must retain the producer line in every data 28 | * file that is created or manipulated using SISL. 29 | * 30 | * Other Usage 31 | * You can be released from the requirements of the license by purchasing 32 | * a commercial license. Buying such a license is mandatory as soon as you 33 | * develop commercial activities involving the SISL library without 34 | * disclosing the source code of your own applications. 35 | * 36 | * This file may be used in accordance with the terms contained in a 37 | * written agreement between you and SINTEF Digital. 38 | */ 39 | 40 | #include "sisl.h" 41 | #include 42 | 43 | 44 | using namespace std; 45 | 46 | 47 | int main() 48 | { 49 | int dim = 2; 50 | int kind = 1; 51 | double coefs[] = { -1, 1, 0, 0, 1, 0, 1, 1 }; 52 | double knots[] = { 0, 0, 0, 0, 1, 1, 1, 1 }; 53 | int num = 4; 54 | int order = 4; 55 | SISLCurve* sc = newCurve(num, order, knots, coefs, kind, dim, 1); 56 | 57 | double itpar; 58 | int stat; 59 | s1013(sc, 1.0, 0.01, 0.3, &itpar, &stat); 60 | double pt[4]; 61 | int kleft; 62 | s1221(sc, 1, itpar, &kleft, pt, &stat); 63 | 64 | cout << itpar << ' ' << pt[2] << ' ' << pt[3] << endl; 65 | } 66 | -------------------------------------------------------------------------------- /cmake/SISLConfig.cmake.in: -------------------------------------------------------------------------------- 1 | @PACKAGE_INIT@ 2 | 3 | include("${CMAKE_CURRENT_LIST_DIR}/SISLTargets.cmake") 4 | 5 | # Legacy compatibility 6 | set(SISL_LIBRARIES sisl) 7 | 8 | # Optional: make include dir available 9 | set(SISL_INCLUDE_DIRS "@CMAKE_INSTALL_PREFIX@/include") 10 | -------------------------------------------------------------------------------- /doc/manual/chap_curve_analysis.ilg: -------------------------------------------------------------------------------- 1 | This is makeindex, version 2.14 [02-Oct-2002] (kpathsea + Thai support). 2 | Scanning input file chap_curve_analysis.tex... 3 | !! Input index error (file = chap_curve_analysis.tex, line = 1): 4 | -- Unknown index keyword \chapter. 5 | !! Input index error (file = chap_curve_analysis.tex, line = 2): 6 | -- Unknown index keyword \label. 7 | !! Input index error (file = chap_curve_analysis.tex, line = 4): 8 | -- Missing arguments -- need two (premature LFD). 9 | !! Input index error (file = chap_curve_analysis.tex, line = 6): 10 | -- Unknown index keyword \section. 11 | !! Input index error (file = chap_curve_analysis.tex, line = 7): 12 | -- Unknown index keyword \input. 13 | !! Input index error (file = chap_curve_analysis.tex, line = 8): 14 | -- Missing arguments -- need two (premature LFD). 15 | !! Input index error (file = chap_curve_analysis.tex, line = 9): 16 | -- Unknown index keyword \input. 17 | !! Input index error (file = chap_curve_analysis.tex, line = 10): 18 | -- Missing arguments -- need two (premature LFD). 19 | !! Input index error (file = chap_curve_analysis.tex, line = 11): 20 | -- Unknown index keyword \input. 21 | !! Input index error (file = chap_curve_analysis.tex, line = 12): 22 | -- Missing arguments -- need two (premature LFD). 23 | !! Input index error (file = chap_curve_analysis.tex, line = 13): 24 | -- Unknown index keyword \input. 25 | !! Input index error (file = chap_curve_analysis.tex, line = 14): 26 | -- Missing arguments -- need two (premature LFD). 27 | !! Input index error (file = chap_curve_analysis.tex, line = 15): 28 | -- Unknown index keyword \input. 29 | !! Input index error (file = chap_curve_analysis.tex, line = 16): 30 | -- Missing arguments -- need two (premature LFD). 31 | done (0 entries accepted, 14 rejected). 32 | Nothing written in chap_curve_analysis.ind. 33 | Transcript written in chap_curve_analysis.ilg. 34 | -------------------------------------------------------------------------------- /doc/manual/chap_curve_analysis.ind: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SINTEF-Geometry/SISL/c9405f5e9a6fd591538094b07d5ba53b7a2d5f3e/doc/manual/chap_curve_analysis.ind -------------------------------------------------------------------------------- /doc/manual/chap_curve_analysis.tex: -------------------------------------------------------------------------------- 1 | \chapter{Curve Analysis} 2 | \label{curveanalysis} 3 | 4 | This chapter describes the Curve Analysis part. 5 | 6 | \section{Curvature Evaluation} 7 | \input{func/s2550} 8 | \pgsbreak 9 | \input{func/s2553} 10 | \pgsbreak 11 | \input{func/s2556} 12 | \pgsbreak 13 | \input{func/s2559} 14 | \pgsbreak 15 | \input{func/s2562} 16 | \pgsbreak 17 | -------------------------------------------------------------------------------- /doc/manual/chap_curve_definition.tex: -------------------------------------------------------------------------------- 1 | \chapter{Curve Definition} 2 | \label{curvedefinition} 3 | 4 | This chapter describes all functions in the Curve Definition module. 5 | \section{Interpolation} 6 | In this section we treat different kinds of interpolation of 7 | points or points and derivatives (Hermite). In addition to the general 8 | functions there are functions to find fillet curves 9 | (a curve between two other curves), 10 | and blending curves (a curve between the end points of two other curves). 11 | \input{func/s1602} 12 | \pgsbreak 13 | \input{func/s1356} 14 | \pgsbreak 15 | \input{func/s1357} 16 | \pgsbreak 17 | \input{func/s1380} 18 | \pgsbreak 19 | \input{func/s1379} 20 | \pgsbreak 21 | \input{func/s1607} 22 | \pgsbreak 23 | \input{func/s1608} 24 | \pgsbreak 25 | \input{func/s1609} 26 | \pgsbreak 27 | \input{func/s1014} 28 | \pgsbreak 29 | \input{func/s1015} 30 | \pgsbreak 31 | \input{func/s1016} 32 | \pgsbreak 33 | \input{func/s1606} 34 | \pgsbreak 35 | \section{Approximation} 36 | Two kinds of curves are treated in this section. 37 | The first is approximations of special shapes like 38 | circles and conic segments. 39 | The second is approximation of a point set, or offsets to curves. 40 | 41 | Except for the point set approximation function, all functions 42 | require a tolerance for the approximation. 43 | Note that there is a close relationship 44 | between the size of the tolerance and the amount of data 45 | for the curve. 46 | \input{func/s1303} 47 | \pgsbreak 48 | \input{func/s1611} 49 | \pgsbreak 50 | \input{func/s1630} 51 | \pgsbreak 52 | \input{func/s1360} 53 | \pgsbreak 54 | \input{func/s1613} 55 | \pgsbreak 56 | \input{func/s1600} 57 | \pgsbreak 58 | \section{Conversion} 59 | \input{func/s1389} 60 | \pgsbreak 61 | \input{func/s1730} 62 | \pgsbreak 63 | \input{func/s1732} 64 | \pgsbreak 65 | \input{func/s1750} 66 | \pgsbreak 67 | \input{func/s1720} 68 | \pgsbreak 69 | \input{func/s1522} 70 | \pgsbreak 71 | \input{func/s1011} 72 | \pgsbreak 73 | \input{func/s1012} 74 | -------------------------------------------------------------------------------- /doc/manual/chap_curve_interrogation.tex: -------------------------------------------------------------------------------- 1 | \chapter{Curve Interrogation} 2 | \label{curveinterrogation} 3 | This chapter describes the functions in the Curve Interrogation module. 4 | \section{Intersections} 5 | 6 | \input{func/s1871} 7 | \pgsbreak 8 | \input{func/s1850} 9 | \pgsbreak 10 | \input{func/s1327} 11 | \pgsbreak 12 | \input{func/s1371} 13 | \pgsbreak 14 | \input{func/s1374} 15 | \pgsbreak 16 | \input{func/s1857} 17 | \pgsbreak 18 | \input{func/s1240} 19 | \pgsbreak 20 | \input{func/s1364} 21 | \pgsbreak 22 | \input{func/s1451} 23 | \pgsbreak 24 | \input{func/s1363} 25 | \pgsbreak 26 | \section{Closest Points} 27 | \input{func/s1953} 28 | \pgsbreak 29 | \input{func/s1957} 30 | \pgsbreak 31 | \input{func/s1774} 32 | \pgsbreak 33 | \input{func/s1955} 34 | \pgsbreak 35 | \input{func/s1013} 36 | \pgsbreak 37 | \input{func/s1920} 38 | \pgsbreak 39 | \section{Area between Curve and Point} 40 | \input{func/s1241} 41 | \pgsbreak 42 | \input{func/s1243} 43 | \pgsbreak 44 | \section{Bounding Box} 45 | Both curves and surfaces have bounding boxes. These are boxes surrounding an object not only parallel to the main axis, but also rotated 45 degrees around each main axis. These bounding boxes are used by the intersection functions to decide if an intersection is possible or not. They might also be used to find the position of objects under other circumstances. 46 | \input{sec_box_object} 47 | \pgsbreak 48 | \input{func/s1988} 49 | \pgsbreak 50 | \section {Normal Cone} 51 | Both curves and surfaces have normal cones. These are the cones that are convex hull of all normalized tangents of a curve and all normalized normals of a surface. 52 | 53 | These normal cones are used by the intersection functions to decide if only one intersection is possible. They might also be used to find directions of objects for other reasons. 54 | \input{sec_cone_object} 55 | \pgsbreak 56 | \input{func/s1986} 57 | -------------------------------------------------------------------------------- /doc/manual/chap_curve_utilities.tex: -------------------------------------------------------------------------------- 1 | \chapter{Curve Utilities} 2 | \label{curveutilities} 3 | This chapter describes the Curve Utilities. 4 | These are common to both the Curve Definition and Curve Interrogation modules. 5 | \input{sec_curve_object} 6 | 7 | \pgsbreak 8 | \section{Evaluation} 9 | \input{func/s1227} 10 | \pgsbreak 11 | \input{func/s1221} 12 | \pgsbreak 13 | \input{func/s1225} 14 | \pgsbreak 15 | \input{func/s1226} 16 | \pgsbreak 17 | \input{func/s1542} 18 | 19 | \section {Subdivision} 20 | \input{func/s1710} 21 | \pgsbreak 22 | \input{func/s1017} 23 | \pgsbreak 24 | \input{func/s1018} 25 | \pgsbreak 26 | \input{func/s1714} 27 | \pgsbreak 28 | \input{func/s1712} 29 | \pgsbreak 30 | \input{func/s1713} 31 | \pgsbreak 32 | \section{Joining} 33 | \input{func/s1715} 34 | \pgsbreak 35 | \input{func/s1716} 36 | \pgsbreak 37 | \input{func/s1706} 38 | \pgsbreak 39 | \input{func/s1233} 40 | 41 | -------------------------------------------------------------------------------- /doc/manual/chap_data_reduction.tex: -------------------------------------------------------------------------------- 1 | \chapter{Data Reduction} 2 | \label{datareduction} 3 | \section{Curves} 4 | \input{func/s1940} 5 | \pgsbreak 6 | \input{func/s1961} 7 | \pgsbreak 8 | \input{func/s1962} 9 | \pgsbreak 10 | \input{func/s1963} 11 | \pgsbreak 12 | \section{Surfaces} 13 | \input{func/s1965} 14 | \pgsbreak 15 | \input{func/s1966} 16 | \pgsbreak 17 | \input{func/s1967} 18 | \pgsbreak 19 | \input{func/s1968} 20 | -------------------------------------------------------------------------------- /doc/manual/chap_surface_analysis.tex: -------------------------------------------------------------------------------- 1 | \chapter{Surface Analysis} 2 | \label{surfaceanalysis} 3 | This chapter describes the Surface Analysis part. 4 | \section{Curvature Evaluation} 5 | \input{func/s2500} 6 | \pgsbreak 7 | \input{func/s2502} 8 | \pgsbreak 9 | \input{func/s2504} 10 | \pgsbreak 11 | \input{func/s2506} 12 | \pgsbreak 13 | \input{func/s2508} 14 | \pgsbreak 15 | \input{func/s2510} 16 | \pgsbreak 17 | \input{func/s2532} 18 | \pgsbreak 19 | \input{func/s2536} 20 | \pgsbreak 21 | \input{func/s2540} 22 | \pgsbreak 23 | \input{func/s2542} 24 | \pgsbreak 25 | \input{func/s2544} 26 | \pgsbreak 27 | \input{func/s2545} 28 | \pgsbreak 29 | -------------------------------------------------------------------------------- /doc/manual/chap_surface_definition.tex: -------------------------------------------------------------------------------- 1 | \chapter{Surface Definition} 2 | \label{surfacedefinition} 3 | \section{Interpolation} 4 | \input{func/s1536} 5 | \pgsbreak 6 | \input{func/s1537} 7 | \pgsbreak 8 | \input{func/s1534} 9 | \pgsbreak 10 | \input{func/s1535} 11 | \pgsbreak 12 | \input{func/s1529} 13 | \pgsbreak 14 | \input{func/s1530} 15 | \pgsbreak 16 | \input{func/s1538} 17 | \pgsbreak 18 | \input{func/s1539} 19 | \pgsbreak 20 | \input{func/s1508} 21 | \pgsbreak 22 | \input{func/s1390} 23 | \pgsbreak 24 | \input{func/s1391} 25 | \pgsbreak 26 | \input{func/s1401} 27 | \pgsbreak 28 | \section{Approximation} 29 | Two kinds of surfaces are treated in this section. The first is 30 | approximation of special shape properties like rotation or sweeping. The 31 | second is offsets to surfaces. 32 | 33 | All functions require a tolerance for use in the approximation. It is 34 | useful to note that there is a close relation between the size of the 35 | tolerance and the amount of data for the surface. 36 | \input{func/s1620} 37 | \pgsbreak 38 | \input{func/s1332} 39 | \pgsbreak 40 | \input{func/s1302} 41 | \pgsbreak 42 | \input{func/s1365} 43 | \pgsbreak 44 | %\section{Mirror a Surface} Moved into func/s1601.tex 45 | \input{func/s1601} 46 | \pgsbreak 47 | \section{Conversion} 48 | \input{func/s1388} 49 | \pgsbreak 50 | \input{func/s1731} 51 | \pgsbreak 52 | \input{func/s1733} 53 | \pgsbreak 54 | \input{func/s1387} 55 | \pgsbreak 56 | \input{func/s1386} 57 | \pgsbreak 58 | \input{func/s1023} 59 | \pgsbreak 60 | \input{func/s1021} 61 | \pgsbreak 62 | \input{func/s1024} 63 | \pgsbreak 64 | \input{func/s1022} 65 | \vfill 66 | \newpage 67 | -------------------------------------------------------------------------------- /doc/manual/chap_surface_utilities.tex: -------------------------------------------------------------------------------- 1 | \chapter{Surface Utilities} 2 | \label{surfaceutilities} 3 | This chapter describes the Surface Utilities. These are common to both 4 | the Surface Definition and Surface Interrogation modules. 5 | 6 | \input{sec_surface_object} 7 | \pgsbreak 8 | \section{Evaluation} 9 | \input{func/s1421} 10 | \pgsbreak 11 | \input{func/s1424} 12 | \pgsbreak 13 | \input{func/s1422} 14 | \pgsbreak 15 | \input{func/s1425} 16 | \pgsbreak 17 | \input{func/s1506} 18 | \pgsbreak 19 | \section{Subdivision} 20 | \input{func/s1711} 21 | \pgsbreak 22 | \input{func/s1025} 23 | \pgsbreak 24 | \section{Picking Curves from a Surface} 25 | \input{func/s1439} 26 | \pgsbreak 27 | \input{func/s1383} 28 | \pgsbreak 29 | \input{func/s1001} 30 | \pgsbreak 31 | \input{func/s1440} 32 | -------------------------------------------------------------------------------- /doc/manual/func/copyCurve.tex: -------------------------------------------------------------------------------- 1 | \subsection{Make a copy of a curve.} 2 | \funclabel{copyCurve} 3 | \begin{minipg1} 4 | Make a copy of a curve. 5 | \end{minipg1}\\ \\ 6 | SYNOPSIS\\ 7 | \>SISLCurve *copyCurve(\begin{minipg3} 8 | {\fov pcurve}) 9 | \end{minipg3}\\[0.3ex] 10 | \>\> SISLCurve \> *{\fov pcurve};\\ 11 | \\ 12 | ARGUMENTS\\ 13 | \>Input Arguments:\\ 14 | \>\> {\fov pcurve} \> - \> Curve to be copied.\\ 15 | \\ 16 | \>Output Arguments:\\ 17 | \>\> {\fov copyCurve} \> - \> The new curve.\\ 18 | \\ 19 | EXAMPLE OF USE\\ 20 | \> \{ \\ 21 | \>\> SISLCurve \> *{\fov curvecopy} = NULL;\\ 22 | \>\> SISLCurve \> *{\fov curve} = NULL;\\ 23 | \>\> int \> {\fov number} = 10;\\ 24 | \>\> int \> {\fov order} = 4;\\ 25 | \>\> double \> {\fov knots}[14]; \,/* Must be defined */\\ 26 | \>\> double \> {\fov coef}[30]; \, /* Must be defined */\\ 27 | \>\> int \> {\fov kind} = 1; /* Non-rational */ \\ 28 | \>\> int \> {\fov dim} = 3;\\ 29 | \>\> int \> {\fov copy} = 1;\\ 30 | \>\> \ldots \\ 31 | \>\>curve = newCurve(\begin{minipg4} 32 | {\fov number}, {\fov order}, {\fov knots}, {\fov coef}, {\fov kind}, {\fov dim}, {\fov copy}); 33 | \end{minipg4}\\ 34 | \>\> \ldots \\ 35 | \>\>curvecopy = copyCurve(\begin{minipg4} 36 | {\fov curve}); 37 | \end{minipg4}\\ 38 | \>\> \ldots \\ 39 | \> \} 40 | \end{tabbing} 41 | -------------------------------------------------------------------------------- /doc/manual/func/copySurface.tex: -------------------------------------------------------------------------------- 1 | \subsection{Make a copy of a surface object.} 2 | \funclabel{copySurface} 3 | \begin{minipg1} 4 | Make a copy of a SISLSurface object. 5 | \end{minipg1}\\ \\ 6 | SYNOPSIS\\ 7 | \>SISLSurf *copySurface(\begin{minipg3} 8 | {\fov psurf}) 9 | \end{minipg3}\\[0.3ex] 10 | \>\> SISLSurf *{\fov psurf};\\ 11 | \\ 12 | ARGUMENTS\\ 13 | \>Input Arguments:\\ 14 | \>\> {\fov psurf}\> - \> \begin{minipg2} 15 | Surface to be copied. 16 | \end{minipg2}\\ 17 | \\ 18 | \>Output Arguments:\\ 19 | \>\> {\fov copySurface}\> - \> \begin{minipg2} 20 | The new surface. 21 | \end{minipg2}\\ 22 | \\ 23 | EXAMPLE OF USE\\ 24 | \> \{ \\ 25 | \>\> SISLSurf\> {\fov *surfcopy} = NULL;\\ 26 | \>\> SISLSurf\> {\fov *surf} = NULL;\\ 27 | \>\> int \> {\fov number1} = 5;\\ 28 | \>\> int \> {\fov number2} = 4;\\ 29 | \>\> int \> {\fov order1} = 4;\\ 30 | \>\> int \> {\fov order2} = 3;\\ 31 | \>\> double \> {\fov knot1}[9];\\ 32 | \>\> double \> {\fov knot2}[7];\\ 33 | \>\> double \> {\fov coef}[60];\\ 34 | \>\> int \> {\fov kind} = 1;\\ 35 | \>\> int \> {\fov dim} = 3;\\ 36 | \>\> int \> {\fov copy} = 1;\\ 37 | \>\> \ldots \\ 38 | \>\>{\fov surf} = newSurf(\begin{minipg4} 39 | {\fov number}1, {\fov number}2, {\fov order}1, {\fov order}2, {\fov knot}1, {\fov knot}2,\\ {\fov coef}, {\fov kind}, {\fov dim}, {\fov copy}); 40 | \end{minipg4}\\ 41 | \>\> \ldots \\ 42 | \>\>surfcopy = copySurface(\begin{minipg4} 43 | {\fov surf}); 44 | \end{minipg4}\\ 45 | \>\> \ldots \\ 46 | \> \} 47 | \end{tabbing} 48 | -------------------------------------------------------------------------------- /doc/manual/func/freeCurve.tex: -------------------------------------------------------------------------------- 1 | \subsection{Delete a curve object.} \label{sec:freeCurve} 2 | \funclabel{freeCurve} 3 | \begin{minipg1} 4 | Free the space occupied by the curve. Before using freeCurve, make sure the curve object exists. 5 | \end{minipg1} \\ \\ 6 | SYNOPSIS\\ 7 | \>void freeCurve(\begin{minipg3} 8 | {\fov curve}) 9 | \end{minipg3}\\[0.3ex] 10 | \>\> SISLCurve \> *{\fov curve};\\ 11 | \\ 12 | ARGUMENTS\\ 13 | \>Input Arguments:\\ 14 | \>\> {\fov curve} \> - \> Pointer to the curve to delete.\\ 15 | EXAMPLE OF USE\\ 16 | \> \{ \\ 17 | \>\> SISLCurve \> *{\fov curve} = NULL;\\ 18 | \>\> int \> {\fov number} = 10;\\ 19 | \>\> int \> {\fov order} = 4;\\ 20 | \>\> double \> {\fov knots}[14];\\ 21 | \>\> double \> {\fov coef}[30];\\ 22 | \>\> int \> {\fov kind} = 1;\\ 23 | \>\> int \> {\fov dim} = 3;\\ 24 | \>\> int \> {\fov copy} = 1;\\ 25 | \>\> \ldots \\ 26 | \>\>curve = newCurve(\begin{minipg4} 27 | {\fov number}, {\fov order}, {\fov knots}, {\fov coef}, {\fov kind}, {\fov dim}, {\fov copy}); 28 | \end{minipg4}\\ 29 | \>\> \ldots \\ 30 | \>\>if (curve) freeCurve(\begin{minipg4} 31 | {\fov curve}); 32 | \end{minipg4}\\ 33 | \>\> \ldots \\ 34 | \> \} 35 | \end{tabbing} 36 | -------------------------------------------------------------------------------- /doc/manual/func/freeIntcrvlist.tex: -------------------------------------------------------------------------------- 1 | \subsection{Free a list of intersection curves.}\label{sec:freeIntcrvlist} 2 | \funclabel{freeIntcrvlist} 3 | \begin{minipg1} 4 | Free a list of SISLIntcurve. 5 | \end{minipg1} \\ \\ 6 | SYNOPSIS\\ 7 | \> void freeIntcrvlist(\begin{minipg3} 8 | {\fov vilist}, {\fov icrv}) 9 | \end{minipg3}\\ 10 | \>\> SISLIntcurve **{\fov vilist};\\ 11 | \>\> int \> {\fov icrv};\\ 12 | \\ 13 | ARGUMENTS\\ 14 | \>Input Arguments:\\ 15 | \>\> {\fov vilist}\> - \> \begin{minipg2} 16 | Array of pointers to pointers to instance 17 | of Intcurve. 18 | \end{minipg2}\\ 19 | \>\> {\fov icrv}\> - \> \begin{minipg2} 20 | number of SISLIntcurves in the list. 21 | \end{minipg2}\\ 22 | \\ 23 | \>Output Arguments:\\ 24 | \>\> {\fov None}\> - \> \begin{minipg2} 25 | None. 26 | \end{minipg2}\\ 27 | \\ 28 | EXAMPLE OF USE\\ 29 | \> \{ \\ 30 | 31 | \>\> SISLIntcurve **{\fov vilist} = NULL;\\ 32 | \>\> int \> {\fov icrv} = 0;\\ \>\> \ldots \\ 33 | \>\> /* SISLIntcurve instances are generated for instance in surface--surface \\ 34 | \>\> intersection */ \\ 35 | \>\> \ldots \\ 36 | \>\>if (vilist) freeIntcrvlist(\begin{minipg4} 37 | {\fov vilist}, {\fov icrv}); 38 | \end{minipg4}\\ 39 | \>\> \ldots \\ 40 | \> \} 41 | \end{tabbing} 42 | -------------------------------------------------------------------------------- /doc/manual/func/freeIntcurve.tex: -------------------------------------------------------------------------------- 1 | \subsection{Delete an intersection curve object.} 2 | \funclabel{freeIntcurve} 3 | \begin{minipg1} 4 | Free the space occupied by a SISLIntcurve.\\ 5 | Note that the arrays {\fov guidepar1} and {\fov guidepar2} will be freed as well. 6 | \end{minipg1} \\ \\ 7 | SYNOPSIS\\ 8 | \>void freeIntcurve(\begin{minipg3} 9 | intcurve) 10 | \end{minipg3}\\[0.3ex] 11 | \>\> SISLIntcurve \> *{\fov intcurve};\\ 12 | \\ 13 | ARGUMENTS\\ 14 | \>Input Arguments:\\ 15 | \>\> {\fov intcurve} \> - \> Pointer to the SISLIntcurve to delete.\\ 16 | \\ 17 | EXAMPLE OF USE\\ 18 | \> \{ \\ 19 | \>\> SISLIntcurve \> *{\fov intcurve} = NULL;\\ 20 | \>\> int \> {\fov numgdpt} = 2;\\ 21 | \>\> int \> {\fov numpar1} = 2;\\ 22 | \>\> int \> {\fov numpar2} = 2;\\ 23 | \>\> double \> {\fov guidepar1}[4];\\ 24 | \>\> double \> {\fov guidepar2}[4];\\ 25 | \>\> int \> {\fov type} = 4;\\ 26 | \>\> \ldots \\ 27 | \>\>{\fov intcurve} = newIntcurve(\begin{minipg4} 28 | {\fov numgdpt}, {\fov numpar1}, {\fov numpar2}, {\fov guidepar1},\\ {\fov guidepar2}, {\fov type}); 29 | \end{minipg4}\\ 30 | \>\> \ldots \\ 31 | \>\>if (intcurve) freeIntcurve(\begin{minipg4} 32 | {\fov intcurve}); 33 | \end{minipg4}\\ 34 | \>\> \ldots \\ 35 | \> \} 36 | \end{tabbing} 37 | -------------------------------------------------------------------------------- /doc/manual/func/freeSurf.tex: -------------------------------------------------------------------------------- 1 | \subsection{Delete a surface object.} 2 | \funclabel{freeSurf} 3 | \begin{minipg1} 4 | Free the space occupied by the surface. Before using freeSurf, make 5 | sure that the surface object exists. 6 | \end{minipg1} \\ 7 | SYNOPSIS\\ 8 | \>void freeSurf(\begin{minipg3} 9 | {\fov surf}) 10 | \end{minipg3}\\[0.3ex] 11 | \>\> SISLSurf \> *{\fov surf};\\ 12 | \\ 13 | ARGUMENTS\\ 14 | \>Input Arguments:\\ 15 | \>\> {\fov surf} \> - \> Pointer to the surface to 16 | delete.\\ 17 | \\ 18 | EXAMPLE OF USE\\ 19 | \> \{ \\ 20 | \>\> SISLSurf\> *{\fov surf} = NULL;\\ 21 | \>\> int \> {\fov number1} = 5;\\ 22 | \>\> int \> {\fov number2} = 4;\\ 23 | \>\> int \> {\fov order1} = 4;\\ 24 | \>\> int \> {\fov order2} = 3;\\ 25 | \>\> double \> {\fov knot1}[9];\\ 26 | \>\> double \> {\fov knot2}[7];\\ 27 | \>\> double \> {\fov coef}[60];\\ 28 | \>\> int \> {\fov kind} = 1;\\ 29 | \>\> int \> {\fov dim} = 3;\\ 30 | \>\> int \> {\fov copy} = 1;\\ 31 | \>\> \ldots \\ 32 | \>\>{\fov surf}$=$newSurf(\begin{minipg4} 33 | {\fov number1}, {\fov number2}, {\fov order1}, {\fov order2}, {\fov knot1}, {\fov knot2},\\ {\fov coef}, {\fov kind}, {\fov dim}, {\fov copy}); 34 | \end{minipg4}\\ 35 | \>\> \ldots \\ 36 | \>\>{\fov if (surf) freeSurf}(\begin{minipg4} 37 | {\fov surf}); 38 | \end{minipg4}\\ 39 | \>\> \ldots \\ 40 | \> \} 41 | \end{tabbing} 42 | -------------------------------------------------------------------------------- /doc/manual/func/newbox.tex: -------------------------------------------------------------------------------- 1 | \subsection{Create and initialize a curve/surface bounding box instance.} 2 | \funclabel{newbox} 3 | \begin{minipg1} 4 | Create and initialize a curve/surface bounding box instance. 5 | \end{minipg1} \\ \\ 6 | SYNOPSIS\\ 7 | \>SISLbox *newbox(\begin{minipg3} 8 | {\fov idim}) 9 | \end{minipg3}\\ 10 | \>\> int \> {\fov idim};\\ 11 | \\ 12 | ARGUMENTS\\ 13 | \>Input Arguments:\\ 14 | \>\> {\fov idim}\> - \> 15 | \begin{minipg2} 16 | Dimension of geometry space. 17 | \end{minipg2}\\ 18 | \\ 19 | \>Output Arguments:\\ 20 | \>\> {\fov newbox}\> - \> 21 | \begin{minipg2} 22 | Pointer to new SISLbox structure. If it is 23 | impossible to allocate space for the structure, 24 | newbox will return a NULL value. 25 | \end{minipg2}\\ 26 | \\ 27 | EXAMPLE OF USE\\ 28 | \> \{ \\ 29 | \>\>int \> {\fov idim} = 3;\\ 30 | \>\>SISLbox *{\fov box} = NULL;\\ 31 | \>\> \ldots \\ 32 | \>\>{\fov box} = newbox(\begin{minipg4} 33 | {\fov idim}); 34 | \end{minipg4}\\ 35 | \>\> \ldots \\ 36 | \> \} 37 | \end{tabbing} 38 | -------------------------------------------------------------------------------- /doc/manual/func/newdir.tex: -------------------------------------------------------------------------------- 1 | \subsection{Create and initialize a curve/surface direction instance.} 2 | \funclabel{newdir} 3 | \begin{minipg1} 4 | Create and initialize a curve/surface direction instance. 5 | \end{minipg1} \\ \\ 6 | SYNOPSIS\\ 7 | \>SISLdir *newdir(\begin{minipg3} 8 | {\fov idim}) 9 | \end{minipg3}\\[0.3ex] 10 | \>\> int \> {\fov idim};\\ 11 | \\ 12 | ARGUMENTS\\ 13 | \>Input Arguments:\\ 14 | \>\> {\fov idim}\> - \> 15 | \begin{minipg2} 16 | Dimension of the space in which the object lies. 17 | \end{minipg2}\\ 18 | \\ 19 | \>Output Arguments:\\ 20 | \>\> {\fov newdir}\> - \> 21 | \begin{minipg2} 22 | Pointer to new direction structure. If it is 23 | impossible to allocate space for the structure, 24 | newdir will return a NULL value. 25 | \end{minipg2}\\ 26 | \\ 27 | EXAMPLE OF USE\\ 28 | \> \{ \\ 29 | \>\>int \> {\fov idim} = 3;\\ 30 | \>\>SISLdir \> *{\fov dir} = NULL;\\ 31 | \>\> \ldots \\ 32 | \>\>{\fov dir} = newdir(\begin{minipg4} 33 | {\fov idim}); 34 | \end{minipg4}\\ 35 | \>\> \ldots \\ 36 | \> \} 37 | \end{tabbing} 38 | -------------------------------------------------------------------------------- /doc/manual/func/s1001.tex: -------------------------------------------------------------------------------- 1 | \section{Pick a Part of a Surface.} 2 | \funclabel{s1001} 3 | \begin{minipg1} 4 | To pick a part of a surface. 5 | The surface produced will always be k-regular, i.e.\ with 6 | k-tupple start/end knots. 7 | \end{minipg1} \\ \\ 8 | SYNOPSIS\\ 9 | \>void s1001(\begin{minipg3} 10 | {\fov ps}, {\fov min1}, {\fov min2}, {\fov max1}, {\fov max2}, {\fov rsnew}, {\fov jstat}) 11 | \end{minipg3}\\[0.3ex] 12 | \>\> SISLSurf \> *{\fov ps};\\ 13 | \>\> double \> {\fov min1};\\ 14 | \>\> double \> {\fov min2};\\ 15 | \>\> double \> {\fov max1};\\ 16 | \>\> double \> {\fov max2};\\ 17 | \>\> SISLSurf \> **{\fov rsnew};\\ 18 | \>\> int \> *{\fov jstat};\\ 19 | \\ 20 | ARGUMENTS\\ 21 | \>Input Arguments:\\ 22 | \>\> {\fov ps}\> - \> \begin{minipg2} 23 | Surface to pick a part of. 24 | \end{minipg2}\\ 25 | \>\> {\fov min1}\> - \> \begin{minipg2} 26 | Minimum value in first parameter direction. 27 | \end{minipg2}\\ 28 | \>\> {\fov min2}\> - \> \begin{minipg2} 29 | Minimum value in second parameter direction. 30 | \end{minipg2}\\ 31 | \>\> {\fov max1}\> - \> \begin{minipg2} 32 | Maximum value in first parameter direction. 33 | \end{minipg2}\\ 34 | \>\> {\fov max2}\> - \> \begin{minipg2} 35 | Maximum value second parameter direction. 36 | \end{minipg2}\\ 37 | \\ 38 | \>Output Arguments:\\ 39 | \>\> {\fov rsnew}\> - \> \begin{minipg2} 40 | The new, picked surface. 41 | \end{minipg2}\\ 42 | \>\> {\fov jstat} \> - \> Status messages\\ 43 | \>\>\>\>\> $> 0$ \> : Warning.\\ 44 | \>\>\>\>\> $= 0$ \> : Ok.\\ 45 | \>\>\>\>\> $< 0$ \> : Error.\\ 46 | \\ 47 | EXAMPLE OF USE\\ 48 | \> \{ \\ 49 | \>\> SISLSurf \> *{\fov ps}; \, /* Must be defined */\\ 50 | \>\> double \> {\fov min1}; \, /* Must be defined */\\ 51 | \>\> double \> {\fov min2}; \, /* Must be defined */\\ 52 | \>\> double \> {\fov max1}; \, /* Must be defined */\\ 53 | \>\> double \> {\fov max2}; \, /* Must be defined */\\ 54 | \>\> SISLSurf \> *{\fov rsnew} = NULL;\\ 55 | \>\> int \> {\fov jstat} = 0;\\ 56 | \>\> \ldots \\ 57 | \>\>s1001(\begin{minipg4} 58 | {\fov ps}, {\fov min1}, {\fov min2}, {\fov max1}, {\fov max2}, \&{\fov rsnew}, \&{\fov jstat}); 59 | \end{minipg4}\\ 60 | \>\> \ldots \\ 61 | \> \} 62 | \end{tabbing} 63 | -------------------------------------------------------------------------------- /doc/manual/func/s1012.tex: -------------------------------------------------------------------------------- 1 | \subsection{Express a truncated helix as a curve.} 2 | \funclabel{s1012} 3 | \begin{minipg1} 4 | Convert an analytical truncated helix to a curve. 5 | The curve will be geometrically exact. 6 | \end{minipg1}\\ \\ 7 | SYNOPSIS\\ 8 | \>void s1012(\begin{minipg3} 9 | {\fov start\_pos}, {\fov axis\_pos}, {\fov axis\_dir}, {\fov frequency}, {\fov numb\_quad}, 10 | {\fov counter\_clock}, {\fov helix}, {\fov stat}) 11 | \end{minipg3}\\[0.3ex] 12 | \>\> double \> {\fov start\_pos}[\,];\\ 13 | \>\> double \> {\fov axis\_pos}[\,];\\ 14 | \>\> double \> {\fov axis\_dir}[\,];\\ 15 | \>\> double \> {\fov frequency};\\ 16 | \>\> int \> {\fov numb\_quad};\\ 17 | \>\> int \> {\fov counter\_clock};\\ 18 | \>\> SISLCurve \> **{\fov helix};\\ 19 | \>\> int \> *{\fov stat};\\ 20 | \\ 21 | ARGUMENTS\\ 22 | \>Input Arguments:\\ 23 | \>\> {\fov start\_pos} \> - \> Start position on the helix.\\ 24 | \>\> {\fov axis\_pos} \> - \> Point on the helix axis.\\ 25 | \>\> {\fov axis\_dir} \> - \> Direction of the helix axis.\\ 26 | \>\> {\fov frequency} \> - \> \begin{minipg2} 27 | The length along the helix 28 | axis for one period of revolution. 29 | \end{minipg2}\\[0.8ex] 30 | \>\> {\fov numb\_quad} \> - \> Number of quadrants in the helix.\\ 31 | \>\> {\fov counter\_clock} \> - \> Flag for direction of revolution:\\ 32 | \>\>\>\>\> $= 0$ : clockwise,\\ 33 | \>\>\>\>\> $= 1$ : counter\_clockwise.\\ 34 | \\ 35 | \>Output Arguments:\\ 36 | \>\> {\fov jstat} \> - \> Status message\\ 37 | \>\>\>\>\> $< 0$ : Error.\\ 38 | \>\>\>\>\> $= 0$ : Ok.\\ 39 | \>\>\>\>\> $> 0$ : Warning.\\ 40 | \>\> {\fov helix} \> - \> Pointer to the helix curve produced.\\ 41 | \newpagetabs 42 | EXAMPLE OF USE\\ 43 | \> \{ \\ 44 | \>\> double \> {\fov start\_pos}[3]; \,/* Must be defined */\\ 45 | \>\> double \> {\fov axis\_pos}[3]; \, /* Must be defined */\\ 46 | \>\> double \> {\fov axis\_dir}[3]; \, /* Must be defined */\\ 47 | \>\> double \> {\fov frequency}; \, /* Must be defined */\\ 48 | \>\> int \> {\fov numb\_quad} = 5;\\ 49 | \>\> int \> {\fov counter\_clock} = 1;\\ 50 | \>\> SISLCurve \> *{\fov helix} = NULL;\\ 51 | \>\> int \> {\fov stat} = 0;\\ 52 | \>\> \ldots \\ 53 | \>\>s1012(\begin{minipg4} 54 | {\fov start\_pos}, {\fov axis\_pos}, {\fov axis\_dir}, {\fov frequency}, {\fov numb\_quad}, 55 | {\fov counter\_clock}, \&{\fov helix}, \&{\fov stat}) 56 | \end{minipg4}\\ 57 | \>\> \ldots \\ 58 | \> \} 59 | \end{tabbing} 60 | -------------------------------------------------------------------------------- /doc/manual/func/s1013.tex: -------------------------------------------------------------------------------- 1 | \subsection{Find a point on a 2D curve along a given direction.} 2 | \funclabel{s1013} 3 | \begin{minipg1} 4 | Find a point on a 2D curve along a given direction. 5 | \end{minipg1}\\ \\ 6 | SYNOPSIS\\ 7 | \>void s1013(\begin{minipg3} 8 | {\fov pcurve}, {\fov ang}, {\fov ang\_tol}, {\fov guess\_par}, {\fov iter\_par}, {\fov jstat}) 9 | \end{minipg3}\\[0.3ex] 10 | \>\> SISLCurve \> *{\fov pcurve};\\ 11 | \>\> double \> {\fov ang};\\ 12 | \>\> double \> {\fov ang\_tol};\\ 13 | \>\> double \> {\fov guess\_par};\\ 14 | \>\> double \> *{\fov iter\_par};\\ 15 | \>\> int \> *{\fov jstat};\\ 16 | \\ 17 | ARGUMENTS\\ 18 | \>Input Arguments:\\ 19 | \>\> {\fov pcurve} \> - \> Pointer to the curve.\\ 20 | \>\> {\fov ang} \> - \> \begin{minipg2} 21 | The angle (in radians) 22 | describing the wanted 23 | \mbox{direction}. 24 | \end{minipg2}\\[0.8ex] 25 | \>\> {\fov ang\_tol} \> - \> The angular tolerance (in radians).\\ 26 | \>\> {\fov guess\_par}\> - \> Start parameter value on the curve.\\ 27 | \\ 28 | \>Output Arguments:\\ 29 | \>\> {\fov iter\_par} \> - \> The parameter value found on the curve.\\ 30 | \>\> {\fov stat} \> - \> Status messages\\ 31 | \>\>\>\>\> $= 2$ : A minimum distance found.\\ 32 | \>\>\>\>\> $= 1$ : Intersection found.\\ 33 | \>\>\>\>\> $< 0$ : Error.\\ 34 | \\ 35 | EXAMPLE OF USE\\ 36 | \> \{ \\ 37 | \>\> SISLCurve \> *{\fov pcurve}; \, /* Must be defined */\\ 38 | \>\> double \> {\fov ang}; \, /* Must be defined */\\ 39 | \>\> double \> {\fov ang\_tol} = 0.01;\\ 40 | \>\> double \> {\fov guess\_par}; \, /* Must be defined */\\ 41 | \>\> double \> {\fov iter\_par};\\ 42 | \>\> int \> {\fov jstat} = 0;\\ 43 | \>\> \ldots \\ 44 | \>\>s1013(\begin{minipg4} 45 | {\fov pcurve}, {\fov ang}, {\fov ang\_tol}, {\fov guess\_par}, \&{\fov iter\_par}, \&{\fov jstat}); 46 | \end{minipg4}\\ 47 | \>\> \ldots \\ 48 | \> \} 49 | \end{tabbing} 50 | -------------------------------------------------------------------------------- /doc/manual/func/s1017.tex: -------------------------------------------------------------------------------- 1 | \subsection{Insert a given knot into the description of a curve.} 2 | \funclabel{s1017} 3 | \begin{minipg1} 4 | Insert a given knot into the description of a curve.\\ 5 | NOTE : When the curve is periodic (i.e.\ the curve flag 6 | $cuopen=-1$), the input parameter value must lie in the half-open 7 | $[et[kk-1], et[kn)$ interval, the function will automatically update 8 | the extra knots and coeffisients. {\fov rcnew}{\tt ->}{\fov in} is 9 | still equal to $pc${\tt ->}$in + 1$! 10 | \end{minipg1} \\ \\ 11 | SYNOPSIS\\ 12 | \>void s1017(\begin{minipg3} 13 | {\fov pc}, {\fov rc}, {\fov apar}, {\fov jstat}) 14 | \end{minipg3}\\[0.3ex] 15 | \>\> SISLCurve \> *{\fov pc};\\ 16 | \>\> SISLCurve \> **{\fov rc};\\ 17 | \>\> double \> {\fov apar};\\ 18 | \>\> int \> *{\fov jstat};\\ 19 | \\ 20 | ARGUMENTS\\ 21 | \>Input Arguments:\\ 22 | \>\> {\fov pc} \> - \> The curve to be refined.\\ 23 | \>\> {\fov apar} \> - \> Parameter value of the knot to be inserted.\\ 24 | \\ 25 | \>Output Arguments:\\ 26 | \>\> {\fov rc} \> - \> The new, refined curve.\\ 27 | \>\> {\fov jstat} \> - \> Status message\\ 28 | \>\>\>\>\> $> 0$ : Warning.\\ 29 | \>\>\>\>\> $= 0$ : Ok.\\ 30 | \>\>\>\>\> $< 0$ : Error.\\ 31 | \\ 32 | EXAMPLE OF USE\\ 33 | \> \{ \\ 34 | \>\> SISLCurve \> *{\fov pc}; \, /* Must be defined */\\ 35 | \>\> double \> {\fov apar}; \, /* Must be defined */\\ 36 | \>\> SISLCurve \> *{\fov rc} = NULL;\\ 37 | \>\> int \> {\fov jstat} = 0;\\ 38 | \>\> \ldots \\ 39 | \>\>s1017(\begin{minipg4} 40 | {\fov pc}, \&{\fov rc}, {\fov apar}, \&{\fov jstat}); 41 | \end{minipg4}\\ 42 | \>\> \ldots \\ 43 | \> \} 44 | \end{tabbing} 45 | -------------------------------------------------------------------------------- /doc/manual/func/s1018.tex: -------------------------------------------------------------------------------- 1 | \subsection{Insert a given set of knots into the description of a curve.} 2 | \funclabel{s1018} 3 | \begin{minipg1} 4 | Insert a given set of knots into the description of a curve.\\ 5 | NOTE : When the curve is periodic (i.e.\ when the curve flag 6 | $cuopen=-1$), the input parameter values must lie in the half-open 7 | $[et[kk-1], et[kn)$, the function will automatically update the extra 8 | knots and coeffisients. 9 | The {\fov rcnew}{\tt ->}{\fov in} will still be equal to $pc${\tt ->}$in + inpar$. 10 | \end{minipg1} \\ \\ 11 | SYNOPSIS\\ 12 | \>void s1018(\begin{minipg3} 13 | {\fov pc}, {\fov epar}, {\fov inpar}, {\fov rcnew}, {\fov jstat}) 14 | \end{minipg3}\\[0.3ex] 15 | \>\> SISLCurve \> *{\fov pc};\\ 16 | \>\> double \> {\fov epar}[\,];\\ 17 | \>\> int \> {\fov inpar};\\ 18 | \>\> SISLCurve \> **{\fov rcnew};\\ 19 | \>\> int \> *{\fov jstat};\\ 20 | \\ 21 | ARGUMENTS\\ 22 | \>Input Arguments:\\ 23 | \>\> {\fov pc} \> - \> The curve to be refined.\\ 24 | \>\> {\fov epar} \> - \> 25 | \begin{minipg2} 26 | Knots to be inserted. The values are stored in increasing 27 | order and may be multiple. 28 | \end{minipg2}\\[0.8ex] 29 | \>\> {\fov inpar} \> - \> Number of knots in {\fov epar}.\\ 30 | \\ 31 | \>Output Arguments:\\ 32 | \>\> {\fov rcnew} \> - \> The new, refined curve.\\ 33 | \>\> {\fov jstat} \> - \> Status message\\ 34 | \>\>\>\>\> $> 0$ : Warning.\\ 35 | \>\>\>\>\> $= 0$ : Ok.\\ 36 | \>\>\>\>\> $< 0$ : Error.\\ 37 | \\ 38 | EXAMPLE OF USE\\ 39 | \> \{ \\ 40 | \>\> SISLCurve \> *{\fov pc}; \, /* Must be defined */\\ 41 | \>\> double \> {\fov epar}[5]; \,/* Must be defined */\\ 42 | \>\> int \> {\fov inpar} = 5;\\ 43 | \>\> SISLCurve \> *{\fov rcnew} = NULL;\\ 44 | \>\> int \> {\fov jstat} = 0;\\ 45 | \>\> \ldots \\ 46 | \>\>s1018(\begin{minipg4} 47 | {\fov pc}, {\fov epar}, {\fov inpar}, \&{\fov rcnew}, \&{\fov jstat}); 48 | \end{minipg4}\\ 49 | \>\> \ldots \\ 50 | \> \} 51 | \end{tabbing} 52 | -------------------------------------------------------------------------------- /doc/manual/func/s1021.tex: -------------------------------------------------------------------------------- 1 | \subsection{Express a truncated cylinder as a surface.} 2 | \funclabel{s1021} 3 | \begin{minipg1} 4 | To express a truncated cylinder as a surface. The cylinder can be 5 | elliptic. 6 | The cylinder will be geometrically exact. 7 | \end{minipg1}\\ \\ 8 | SYNOPSIS\\ 9 | \>void s1021(\begin{minipg3} 10 | {\fov bottom\_pos}, {\fov bottom\_axis}, {\fov ellipse\_ratio}, {\fov axis\_dir}, 11 | {\fov height}, {\fov cyl}, {\fov stat}) 12 | \end{minipg3}\\[0.3ex] 13 | \>\> double \> {\fov bottom\_pos}[\,];\\ 14 | \>\> double \> {\fov bottom\_axis}[\,];\\ 15 | \>\> double \> {\fov ellipse\_ratio};\\ 16 | \>\> double \> {\fov axis\_dir}[\,];\\ 17 | \>\> double \> {\fov height};\\ 18 | \>\> SISLSurf \> **{\fov cyl};\\ 19 | \>\> int \> *{\fov stat};\\ 20 | \\ 21 | ARGUMENTS\\ 22 | \>Input Arguments:\\ 23 | \>\> {\fov bottom\_pos} \> - \> Center point of the bottom.\\ 24 | \>\> {\fov bottom\_axis} \> - \> One of the bottom axis 25 | (major or minor).\\ 26 | \>\> {\fov ellipse\_ratio} \> - \> Ratio between the other 27 | axis and bottom\_axis.\\ 28 | \>\> {\fov axis\_dir} \> - \> Direction of the cylinder axis.\\ 29 | \>\> {\fov height} \> - \> Height of the cone, can be negative.\\ 30 | \\ 31 | \>Output Arguments:\\ 32 | \>\> {\fov cyl} \> - \> Pointer to the cylinder produced.\\ 33 | \>\> {\fov stat} \> - \> Status messages\\ 34 | \>\>\>\>\> $> 0$ : Warning.\\ 35 | \>\>\>\>\> $= 0$ : Ok.\\ 36 | \>\>\>\>\> $< 0$ : Error.\\ 37 | \\ 38 | EXAMPLE OF USE\\ 39 | \> \{ \\ 40 | \>\> double \> {\fov bottom\_pos}[3]; \, /* Must be defined */\\ 41 | \>\> double \> {\fov bottom\_axis}[3]; \, /* Must be defined */\\ 42 | \>\> double \> {\fov ellipse\_ratio} = 1.0; /* Circular cylinder */\\ 43 | \>\> double \> {\fov axis\_dir}[3]; \, /* Must be defined */\\ 44 | \>\> double \> {\fov height}; \, /* Must be defined */\\ 45 | \>\> SISLSurf \> *{\fov cyl} = NULL;\\ 46 | \>\> int \> {\fov stat} = 0;\\ 47 | \>\> \ldots \\ 48 | \>\>s1021(\begin{minipg4} 49 | {\fov bottom\_pos}, {\fov bottom\_axis}, {\fov ellipse\_ratio}, {\fov axis\_dir}, 50 | {\fov height}, \&{\fov cyl}, \&{\fov stat}) 51 | \end{minipg4}\\ 52 | \>\> \ldots \\ 53 | \> \} 54 | \end{tabbing} 55 | -------------------------------------------------------------------------------- /doc/manual/func/s1231.tex: -------------------------------------------------------------------------------- 1 | \subsection{Subdivide a NURBS curve at a specified internal parameter value.} 2 | \funclabel{s1231} 3 | \begin{minipg1} 4 | Subdivide a NURBS curve at a given {\bf internal} parameter-value. If the subdivision parameter is at an end of the parameter interval, an error message is given. 5 | \end{minipg1} \\ \\ 6 | SYNOPSIS\\ 7 | \>void s1231(\begin{minipg3} 8 | {\fov curve}, {\fov parval}, {\fov newcurve1}, {\fov newcurve2}, {\fov stat}) 9 | \end{minipg3}\\[0.3ex] 10 | \>\> SISLCurve \> *{\fov curve};\\ 11 | \>\> double \> {\fov parval};\\ 12 | \>\> SISLCurve \> **{\fov newcurve1};\\ 13 | \>\> SISLCurve \> **{\fov newcurve2};\\ 14 | \>\> int \> *{\fov stat};\\ 15 | \\ 16 | ARGUMENTS\\ 17 | \>Input Arguments:\\ 18 | \>\> {\fov curve} \> - \> SISLCurve to subdivide.\\ 19 | \>\> {\fov parval} \> - \> \begin{minipg2} 20 | Parameter value at which to subdivide. 21 | \end{minipg2}\\ 22 | \\ 23 | \>Output Arguments:\\ 24 | \>\> {\fov newcurve1}\> - \>\begin{minipg2} 25 | First part of the subdivided curve. 26 | \end{minipg2}\\ 27 | \>\> {\fov newcurve2}\> - \>\begin{minipg2} 28 | Second part of the subdivided curve. 29 | \end{minipg2}\\[0.3ex] 30 | \>\> {\fov stat} \> - \> Status messages\\ 31 | \>\>\>\>\> $> 0$ : warning\\ 32 | \>\>\>\>\> $= 0$ : ok\\ 33 | \>\>\>\>\> $< 0$ : error\\ 34 | EXAMPLE OF USE\\ 35 | \> \{ \\ 36 | \>\> SISLCurve \> *{\fov curve};\\ 37 | \>\> double \> {\fov parval};\\ 38 | \>\> SISLCurve \> *{\fov newcurve1};\\ 39 | \>\> SISLCurve \> *{\fov newcurve2};\\ 40 | \>\> int \> {\fov stat};\\ 41 | \>\> \ldots \\ 42 | \>\>s1231(\begin{minipg4} 43 | {\fov curve}, {\fov parval}, \&{\fov newcurve1}, \&{\fov newcurve2}, \&{\fov stat}); 44 | \end{minipg4}\\ 45 | \>\> \ldots \\ 46 | \> \} 47 | \end{tabbing} 48 | -------------------------------------------------------------------------------- /doc/manual/func/s1233.tex: -------------------------------------------------------------------------------- 1 | \section{Extend a B-spline Curve.} 2 | \funclabel{s1233} 3 | \begin{minipg1} 4 | To extend a B-spline curve (i.e.\ NOT rationals) at the start and/or 5 | the end of the curve by continuing the polynomial behaviour of the 6 | curve. 7 | \end{minipg1} \\ \\ 8 | SYNOPSIS\\ 9 | \>void s1233(\begin{minipg3} 10 | {\fov pc}, {\fov afak1}, {\fov afak2}, {\fov rc}, {\fov jstat}) 11 | \end{minipg3}\\[0.3ex] 12 | \>\> SISLCurve \> *{\fov pc};\\ 13 | \>\> double \> {\fov afak1};\\ 14 | \>\> double \> {\fov afak2};\\ 15 | \>\> SISLCurve \> **{\fov rc};\\ 16 | \>\> int \> *{\fov jstat};\\ 17 | \\ 18 | ARGUMENTS\\ 19 | \>Input Arguments:\\ 20 | \>\> {\fov pc} \> - \> 21 | \begin{minipg2} 22 | Pointer to the B-spline curve to be extended. 23 | \end{minipg2}\\[0.8ex] 24 | \>\> {\fov afak1} \> - \> 25 | \begin{minipg2} 26 | How much the curve is to be stretched at the 27 | start of the curve. The length of the stretched 28 | curve will be equal to $(1+afak1)$ times the 29 | input curve. $afak1\geq 0$ and will be set to 0 if 30 | negative. 31 | \end{minipg2}\\[0.8ex] 32 | \>\> {\fov afak2} \> - \> 33 | \begin{minipg2} 34 | How much the curve is to be stretched at the 35 | end of the curve. The length of the stretched 36 | curve will be equal to $(1+afak2)$ times the 37 | input curve. $afak2\geq 0$ and will be set to 0 if 38 | negative. 39 | \end{minipg2}\\[0.8ex] 40 | \\ 41 | \>Output Arguments:\\ 42 | \>\> {\fov rc} \> - \> Pointer to the extended B-spline curve.\\ 43 | \>\> {\fov jstat} \> - \> Status message\\ 44 | \>\>\>\>\> $< 0$ : Error.\\ 45 | \>\>\>\>\> $= 0$ : Ok.\\ 46 | \>\>\>\>\> $= 1$ : \begin{minipg5} 47 | Stretching factors less than 0 48 | -- read: adjusted factor(s) 49 | have been used. 50 | \end{minipg5}\\[0.3ex] 51 | \>\>\>\>\> $> 0$ : Warning.\\ 52 | \newpagetabs 53 | EXAMPLE OF USE\\ 54 | \> \{ \\ 55 | \>\> SISLCurve \> *{\fov pc}; \, /* Must be defined */\\ 56 | \>\> double \> {\fov afak1} = 0.1;\\ 57 | \>\> double \> {\fov afak2} = 0.1;\\ 58 | \>\> SISLCurve \> *{\fov rc} = NULL;\\ 59 | \>\> int \> {\fov jstat} = 0;\\ 60 | \>\> \ldots \\ 61 | \>\>s1233(\begin{minipg4} 62 | {\fov pc}, {\fov afak1}, {\fov afak2}, \&{\fov rc}, \&{\fov jstat}); 63 | \end{minipg4}\\ 64 | \>\> \ldots \\ 65 | \> \} 66 | \end{tabbing} 67 | -------------------------------------------------------------------------------- /doc/manual/func/s1237.tex: -------------------------------------------------------------------------------- 1 | \subsection{Draw constant parameter lines in a surface 2 | using piecewise straight lines.} 3 | \funclabel{s1237} 4 | \begin{minipg1} 5 | Draw constant parameter lines in a surface. 6 | The distance between the surface and the 7 | straight lines is less than a tolerance epsge. Also see NOTE! 8 | \end{minipg1} \\ \\ 9 | SYNOPSIS\\ 10 | \>void s1237(\begin{minipg3} 11 | {\fov surf}, {\fov numline1}, {\fov numline2}, {\fov epsge}, {\fov stat}) 12 | \end{minipg3}\\[0.3ex] 13 | \>\> SISLSurf \> *{\fov surf};\\ 14 | \>\> int \> {\fov numline1};\\ 15 | \>\> int \> {\fov numline2};\\ 16 | \>\> double \> {\fov epsge};\\ 17 | \>\> int \> *{\fov stat};\\ 18 | \\ 19 | ARGUMENTS\\ 20 | \>Input Arguments:\\ 21 | \>\> {\fov surf}\> - \> \begin{minipg2} 22 | Pointer to the surface. 23 | \end{minipg2}\\ 24 | \>\> {\fov numline1}\> - \> \begin{minipg2} 25 | Number of constant parameter lines to be drawn in the first 26 | parameter direction. 27 | \end{minipg2}\\[0.3ex] 28 | \>\> {\fov numline2}\> - \> \begin{minipg2} 29 | Number of constant parameter lines to be drawn in the 30 | second parameter direction. 31 | \end{minipg2}\\[0.3ex] 32 | \>\> {\fov epsge}\> - \> \begin{minipg2} 33 | The maximal distance allowed between the drawn curves 34 | and the surface. 35 | \end{minipg2} \\[0.8ex] 36 | \\ 37 | \>Output Arguments:\\ 38 | \>\> {\fov stat} \> - \> Status messages\\ 39 | \>\>\>\>\> $> 0$ : warning\\ 40 | \>\>\>\>\> $= 0$ : ok\\ 41 | \>\>\>\>\> $< 0$ : error\\ 42 | \\ 43 | NOTE\\ 44 | \>\begin{minipg6} 45 | This function calls s6drawseq() which 46 | is device dependent. Before using the function make sure 47 | you have a version of s6drawseq() 48 | interfaced to your graphic package. 49 | More about s6drawseq() on page~\pageref{s6drawseq}. 50 | \end{minipg6} 51 | \newpagetabs 52 | EXAMPLE OF USE\\ 53 | \> \{ \\ 54 | \>\> SISLSurf \> *{\fov surf};\\ 55 | \>\> int \> {\fov numline1};\\ 56 | \>\> int \> {\fov numline2};\\ 57 | \>\> double \> {\fov epsge};\\ 58 | \>\> int \> {\fov stat};\\ 59 | \>\> \ldots \\ 60 | \>\>s1237(\begin{minipg4} 61 | {\fov surf}, {\fov numline1}, {\fov numline2}, {\fov epsge}, \&{\fov stat}); 62 | \end{minipg4}\\ 63 | \>\> \ldots \\ 64 | \> \} 65 | \end{tabbing} 66 | -------------------------------------------------------------------------------- /doc/manual/func/s1240.tex: -------------------------------------------------------------------------------- 1 | \section{Compute the Length of a Curve} 2 | \funclabel{s1240} 3 | \begin{minipg1} 4 | Compute the length of a curve. The length calculated will not deviate 5 | more than {\fov epsge} divided by the calculated length, from the real 6 | length of the curve. 7 | \end{minipg1} \\ \\ 8 | SYNOPSIS\\ 9 | \>void s1240(\begin{minipg3} 10 | {\fov curve}, {\fov epsge}, {\fov length}, {\fov stat}) 11 | \end{minipg3}\\[0.3ex] 12 | \>\> SISLCurve \> *{\fov curve};\\ 13 | \>\> double \> {\fov epsge};\\ 14 | \>\> double \> *{\fov length};\\ 15 | \>\> int \> *{\fov stat};\\ 16 | \\ 17 | ARGUMENTS\\ 18 | \>Input Arguments:\\ 19 | \>\> {\fov curve} \> - \> The curve.\\ 20 | \>\> {\fov epsge} \> - \> Geometry resolution.\\ 21 | \\ 22 | \>Output Arguments:\\ 23 | \>\> {\fov length} \> - \> The length of the curve.\\ 24 | \>\> {\fov stat} \> - \> Status messages\\ 25 | \>\>\>\>\> $> 0$ : Warning.\\ 26 | \>\>\>\>\> $= 0$ : Ok.\\ 27 | \>\>\>\>\> $< 0$ : Error.\\ 28 | \\ 29 | NOTE\\ 30 | \>\begin{minipg6} 31 | The algorithm is based on recursive 32 | subdivision and will thus for small values 33 | of {\fov epsge} require long computation time. 34 | \end{minipg6} \\ \\ 35 | EXAMPLE OF USE\\ 36 | \> \{ \\ 37 | \>\> SISLCurve \> *{\fov curve}; \, /* Must be defined */\\ 38 | \>\> double \> {\fov epsge} = 0.001;\\ 39 | \>\> double \> {\fov length};\\ 40 | \>\> int \> {\fov stat} = 0;\\ 41 | \>\> \ldots \\ 42 | \>\>s1240(\begin{minipg4} 43 | {\fov curve}, {\fov epsge}, \&{\fov length}, \&{\fov stat}); 44 | \end{minipg4}\\ 45 | \>\> \ldots \\ 46 | \> \} 47 | \end{tabbing} 48 | -------------------------------------------------------------------------------- /doc/manual/func/s1332.tex: -------------------------------------------------------------------------------- 1 | \subsection{Compute a linear swept surface.} 2 | \funclabel{s1332} 3 | \begin{minipg1} 4 | To create a linear swept surface by making the tensor-product of two curves. 5 | \end{minipg1} \\ \\ 6 | SYNOPSIS\\ 7 | \>void s1332(\begin{minipg3} 8 | {\fov curve1}, {\fov curve2}, {\fov epsge}, {\fov point}, {\fov surf}, {\fov stat}) 9 | \end{minipg3}\\[0.3ex] 10 | \>\> SISLCurve \> *{\fov curve1};\\ 11 | \>\> SISLCurve \> *{\fov curve2};\\ 12 | \>\> double \> {\fov epsge};\\ 13 | \>\> double \> {\fov point}[\,];\\ 14 | \>\> SISLSurf \> **{\fov surf};\\ 15 | \>\> int \> *{\fov stat};\\ 16 | 17 | \\ 18 | ARGUMENTS\\ 19 | \>Input Arguments:\\ 20 | \>\> {\fov curve1} \> - \> \begin{minipg2} 21 | Pointer to curve 1. 22 | \end{minipg2}\\ 23 | \>\> {\fov curve2} \> - \> \begin{minipg2} 24 | Pointer to curve 2. 25 | \end{minipg2}\\ 26 | \>\> {\fov epsge}\> - \> \begin{minipg2} 27 | Maximal deviation allowed between the true swept 28 | surface and the generated surface. 29 | \end{minipg2}\\[0.3ex] 30 | \>\> {\fov point} \> - \> \begin{minipg2} 31 | Point near the curve to sweep along. The vertices of the new surface are made by adding the vector from point to each of the vertices on the sweep curve, to each of the vertices on the other curve. 32 | \end{minipg2} \\[0.8ex] 33 | \\ 34 | \>Output Arguments:\\ 35 | \>\> {\fov surf} \> - \> \begin{minipg2} 36 | Pointer to the surface produced. 37 | \end{minipg2}\\ 38 | \>\> {\fov stat} \> - \> Status messages\\ 39 | \>\>\>\>\> $>0$ : warning\\ 40 | \>\>\>\>\> $=0$ : ok\\ 41 | \>\>\>\>\> $<0$ : error\\ 42 | \\ 43 | EXAMPLE OF USE\\ 44 | \> \{ \\ 45 | \>\> curve \> *{\fov curve1}; \, /* Must be defined */\\ 46 | \>\> curve \> *{\fov curve2}; \, /* Must be defined */\\ 47 | \>\> double \> {\fov epsge} = 0.001 ;\\ 48 | \>\> double \> {\fov point}[3]; \, /* Dimension as for curve coefficients. Must be defined */\\ 49 | \>\> SISLSurf \> *{\fov surf} = NULL;\\ 50 | \>\> int \> {\fov stat} = 0;\\ 51 | \>\> \ldots \\ 52 | \>\>s1332(\begin{minipg4} 53 | {\fov curve1}, {\fov curve2}, {\fov epsge}, {\fov point}, \&{\fov surf}, \&{\fov stat}); 54 | \end{minipg4}\\ 55 | \>\> \ldots \\ 56 | \> \} 57 | \end{tabbing} 58 | -------------------------------------------------------------------------------- /doc/manual/func/s1363.tex: -------------------------------------------------------------------------------- 1 | \section{Pick the Parameter Range of a Curve} 2 | \funclabel{s1363} 3 | \begin{minipg1} 4 | To pick the parameter range of a curve. 5 | \end{minipg1} \\ \\ 6 | SYNOPSIS\\ 7 | \>void s1363(\begin{minipg3} 8 | {\fov curve}, {\fov startpar}, {\fov endpar}, {\fov stat}) 9 | \end{minipg3}\\[0.3ex] 10 | \>\> SISLCurve \> *{\fov curve};\\ 11 | \>\> double \> *{\fov startpar};\\ 12 | \>\> double \> *{\fov endpar};\\ 13 | \>\> int \> *{\fov stat};\\ 14 | \\ 15 | ARGUMENTS\\ 16 | \>Input Arguments:\\ 17 | \>\> {\fov curve} \> - \> The curve.\\ 18 | \\ 19 | \>Output Arguments:\\ 20 | \>\> {\fov startpar}\> - \> Start of the parameter interval of the curve.\\ 21 | \>\> {\fov endpar} \> - \> End of the parameter interval of the curve.\\ 22 | \>\> {\fov stat} \> - \> Status messages\\ 23 | \>\>\>\>\> $= 1$ : warning\\ 24 | \>\>\>\>\> $= 0$ : ok\\ 25 | \>\>\>\>\> $< 0$ : error\\ 26 | \\ 27 | EXAMPLE OF USE\\ 28 | \> \{ \\ 29 | \>\> SISLCurve \> *{\fov curve}; \, /* Must be defined */\\ 30 | \>\> double \> {\fov startpar};\\ 31 | \>\> double \> {\fov endpar};\\ 32 | \>\> int \> {\fov stat} = 0;\\ 33 | \>\> \ldots \\ 34 | \>\>s1363(\begin{minipg4} 35 | {\fov curve}, \&{\fov startpar}, \&{\fov endpar}, \&{\fov stat}); 36 | \end{minipg4}\\ 37 | \>\> \ldots \\ 38 | \> \} 39 | \end{tabbing} 40 | -------------------------------------------------------------------------------- /doc/manual/func/s1364.tex: -------------------------------------------------------------------------------- 1 | \section{Check if a Curve is Closed} 2 | \funclabel{s1364} 3 | \begin{minipg1} 4 | To check if a curve is closed, i.e.\ test if the distance between the 5 | end points of the curve is less than a given tolerance. 6 | \end{minipg1} \\ \\ 7 | SYNOPSIS\\ 8 | \>void s1364(\begin{minipg3} 9 | {\fov curve}, {\fov epsge}, {\fov stat}) 10 | \end{minipg3}\\[0.3ex] 11 | \>\> SISLCurve \> *{\fov curve};\\ 12 | \>\> double \> {\fov epsge};\\ 13 | \>\> int \> *{\fov stat};\\ 14 | \\ 15 | ARGUMENTS\\ 16 | \>Input Arguments:\\ 17 | \>\> {\fov curve} \> - \> The curve.\\ 18 | \>\> {\fov epsge} \> - \> Geometric tolerance.\\ 19 | \\ 20 | \>Output Arguments:\\ 21 | \>\> {\fov stat} \> - \> Status messages\\ 22 | \>\>\>\>\> $= 2$ : Curve is closed and periodic.\\ 23 | \>\>\>\>\> $= 1$ : Curve is closed.\\ 24 | \>\>\>\>\> $= 0$ : Curve is open.\\ 25 | \>\>\>\>\> $< 0$ : Error.\\ 26 | \\ 27 | EXAMPLE OF USE\\ 28 | \> \{ \\ 29 | \>\> SISLCurve \> *{\fov curve}; \, /* Must be defined */\\ 30 | \>\> double \> {\fov epsge} = 1.0e-6;\\ 31 | \>\> int \> {\fov stat} = 0;\\ 32 | \>\> \ldots \\ 33 | \>\>s1364(\begin{minipg4} 34 | {\fov curve}, {\fov epsge}, \&{\fov stat}); 35 | \end{minipg4}\\ 36 | \>\> \ldots \\ 37 | \> \} 38 | \end{tabbing} 39 | -------------------------------------------------------------------------------- /doc/manual/func/s1386.tex: -------------------------------------------------------------------------------- 1 | \subsection{Express the ``i,j''-th derivative of an open surface as a \mbox{surface}.} 2 | \funclabel{s1386} 3 | \begin{minipg1} 4 | To express the $(der1, der2)$-th derivative of an open surface as a surface. 5 | \end{minipg1} \\ \\ 6 | SYNOPSIS\\ 7 | \>void s1386(\begin{minipg3} 8 | {\fov surf}, {\fov der1}, {\fov der2}, {\fov newsurf}, {\fov stat}) 9 | \end{minipg3}\\[0.3ex] 10 | \>\> SISLSurf \> *{\fov surf};\\ 11 | \>\> int \> {\fov der1};\\ 12 | \>\> int \> {\fov der2};\\ 13 | \>\> SISLSurf \> **{\fov newsurf};\\ 14 | \>\> int \> *{\fov stat};\\ 15 | ARGUMENTS\\ 16 | \>Input Arguments:\\ 17 | \>\> {\fov surf} \> - \> \begin{minipg2} 18 | Surface to differentiate. 19 | \end{minipg2}\\ 20 | \>\> {\fov der1} \> - \> \begin{minipg2} 21 | The derivative to be produced in the first 22 | parameter direction: $0\leq der1$ 23 | \end{minipg2}\\[0.8ex] 24 | \>\> {\fov der2} \> - \> \begin{minipg2} 25 | The derivative to be produced in the second 26 | parameter direction: $0\leq der2$ 27 | \end{minipg2}\\[0.8ex] 28 | \>Output Arguments:\\ 29 | \>\> {\fov newsurf} \> - \> \begin{minipg2} 30 | The result of the (der1, der2) differentiation of surf. 31 | \end{minipg2}\\ 32 | \>\> {\fov stat} \> - \> Status messages\\ 33 | \>\>\>\>\> $> 0$ : warning\\ 34 | \>\>\>\>\> $= 0$ : ok\\ 35 | \>\>\>\>\> $< 0$ : error\\[1.0ex] 36 | \\ 37 | EXAMPLE OF USE\\ 38 | \> \{ \\ 39 | \>\> SISLSurf \> *{\fov surf}; \, /* Must be defined */\\ 40 | \>\> int \> {\fov der1} = 1;\\ 41 | \>\> int \> {\fov der2} = 0;\\ 42 | \>\> SISLSurf \> *{\fov newsurf} = NULL;\\ 43 | \>\> int \> {\fov stat} = 0;\\ 44 | \>\> \ldots \\ 45 | \>\>s1386(\begin{minipg4} 46 | {\fov surf}, {\fov der1}, {\fov der2}, \&{\fov newsurf}, \&{\fov stat}); 47 | \end{minipg4}\\ 48 | \>\> \ldots \\ 49 | \> \} 50 | \end{tabbing} 51 | -------------------------------------------------------------------------------- /doc/manual/func/s1387.tex: -------------------------------------------------------------------------------- 1 | \subsection{Express a surface using a higher order basis.} 2 | \funclabel{s1387} 3 | \begin{minipg1} 4 | To express a surface as a surface of higher order. 5 | \end{minipg1} \\ \\ 6 | SYNOPSIS\\ 7 | \>void s1387(\begin{minipg3} 8 | {\fov surf}, {\fov order1}, {\fov order2}, {\fov newsurf}, {\fov stat}) 9 | \end{minipg3}\\[0.3ex] 10 | 11 | \>\> SISLSurf \> *{\fov surf};\\ 12 | \>\> int \> {\fov order1};\\ 13 | \>\> int \> {\fov order2};\\ 14 | \>\> SISLSurf \> **{\fov newsurf};\\ 15 | \>\> int \> *{\fov stat};\\ 16 | \\ 17 | ARGUMENTS\\ 18 | \>Input Arguments:\\ 19 | \>\> {\fov surf}\> - \> \begin{minipg2} 20 | Surface to raise the order of. 21 | \end{minipg2}\\ 22 | \>\> {\fov order1}\> - \> \begin{minipg2} 23 | New order in the first parameter direction. 24 | \end{minipg2}\\ 25 | \>\> {\fov order2}\> - \> \begin{minipg2} 26 | New order in the second parameter direction. 27 | \end{minipg2}\\ 28 | \>Output Arguments:\\ 29 | \>\> {\fov newsurf}\> - \> \begin{minipg2} 30 | The resulting order elevated surface. 31 | \end{minipg2}\\ 32 | \>\> {\fov stat} \> - \> Status messages\\ 33 | \>\>\>\>\> $= 1$ : \> \begin{minipg5} 34 | Input order equal to 35 | order of surface. 36 | Pointer set to input. 37 | \end{minipg5}\\[0.8ex] 38 | \>\>\>\>\> $= 0$ : \>Ok.\\ 39 | \>\>\>\>\> $< 0$ : \>Error.\\ 40 | \\ 41 | EXAMPLE OF USE\\ 42 | \> \{ \\ 43 | \>\> SISLSurf \> *{\fov surf}; \, /* Must be defined */\\ 44 | \>\> int \> {\fov order1}; \, /* Must be defined. Larger than or equal to surf--$>$ik1 */\\ 45 | \>\> int \> {\fov order2}; \, /* Must be defined. Larger than or equal to surf--$>$ik2 */\\ 46 | \>\> SISLSurf \> *{\fov newsurf} = NULL;\\ 47 | \>\> int \> {\fov stat} = 0;\\ 48 | \>\> \ldots \\ 49 | \>\>s1387(\begin{minipg4} 50 | {\fov surf}, {\fov order1}, {\fov order2}, \&{\fov newsurf}, \&{\fov stat}); 51 | \end{minipg4}\\ 52 | \>\> \ldots \\ 53 | \> \} 54 | \end{tabbing} 55 | -------------------------------------------------------------------------------- /doc/manual/func/s1389.tex: -------------------------------------------------------------------------------- 1 | \subsection{Convert a curve of order up to four, to a sequence of cubic polynomials.} 2 | \funclabel{s1389} 3 | \begin{minipg1} 4 | Convert a curve of order up to 4 to a sequence of non-rational cubic 5 | segments with uniform parameterization. 6 | \end{minipg1} \\ 7 | SYNOPSIS\\ 8 | \>void s1389(\begin{minipg3} 9 | {\fov curve}, {\fov cubic}, {\fov numcubic}, {\fov dim}, {\fov stat}) 10 | \end{minipg3}\\[0.3ex] 11 | 12 | \>\> SISLCurve \> *{\fov curve};\\ 13 | \>\> double \> **{\fov cubic};\\ 14 | \>\> int \> *{\fov numcubic};\\ 15 | \>\> int \> *{\fov dim};\\ 16 | \>\> int \> *{\fov stat};\\ 17 | ARGUMENTS\\ 18 | \>Input Arguments:\\ 19 | \>\> {\fov curve} \> - \> \begin{minipg2} 20 | Pointer to the curve that is to be converted 21 | \end{minipg2}\\[0.8ex] 22 | \>Output Arguments:\\ 23 | \>\> {\fov cubic} \> - \> \begin{minipg2} 24 | Array containing the sequence of cubic segments. 25 | Each segment is represented by the start point, 26 | followed by the start tangent, end point and end 27 | tangent. Each segment needs 4*dim doubles for storage. 28 | \end{minipg2}\\[0.3ex] 29 | \>\> {\fov numcubic}\> - \> \begin{minipg2} 30 | Number of elements of length 31 | (4*dim) in the array cubic 32 | \end{minipg2}\\[0.8ex] 33 | \>\> {\fov dim} \> - \> \begin{minipg2} 34 | The dimension of the geometric space. 35 | \end{minipg2}\\ 36 | \>\> {\fov stat} \> - \> Status messages\\ 37 | \>\>\>\>\> $> 0$ :\>\begin{minipg5} 38 | warning 39 | \end{minipg5}\\ 40 | \>\>\>\>\> $= 0$ :\> ok\\ 41 | \>\>\>\>\> $< 0$ :\> error\\ 42 | EXAMPLE OF USE\\ 43 | \> \{ \\ 44 | \>\> SISLCurve \> *{\fov curve}; \, /* Must be defined */\\ 45 | \>\> double \> *{\fov cubic} = NULL;\\ 46 | \>\> int \> {\fov numcubic};\\ 47 | \>\> int \> {\fov dim};\\ 48 | \>\> int \> {\fov stat} = 0;\\ 49 | \>\> \ldots \\ 50 | \>\>s1389(\begin{minipg4} 51 | {\fov curve}, \&{\fov cubic}, \&{\fov numcubic}, \&{\fov dim}, 52 | \&{\fov stat}); 53 | \end{minipg4}\\ 54 | \>\> \ldots \\ 55 | \> \} 56 | \end{tabbing} 57 | -------------------------------------------------------------------------------- /doc/manual/func/s1436.tex: -------------------------------------------------------------------------------- 1 | \subsection{Pick a curve lying in surface, with constant second parameter value.} 2 | \funclabel{s1436} 3 | \begin{minipg1} 4 | Make constant parameter curve in the surface. The constant parameter value 5 | used is parvalue and is in the second parameter direction. 6 | \end{minipg1} \\ \\ 7 | SYNOPSIS\\ 8 | \>void s1436(\begin{minipg3} 9 | {\fov surf}, {\fov parvalue}, {\fov curve}, {\fov stat}) 10 | \end{minipg3}\\[0.3ex] 11 | \>\> SISLSurf \> *{\fov surf};\\ 12 | \>\> double \> {\fov parvalue};\\ 13 | \>\> SISLCurve \> **{\fov curve};\\ 14 | \>\> int \> *{\fov stat};\\ 15 | \\ 16 | ARGUMENTS\\ 17 | \>Input Arguments:\\ 18 | \>\> {\fov surf}\> - \> \begin{minipg2} 19 | Surface to pick the curve from. 20 | \end{minipg2}\\[0.3ex] 21 | \>\> {\fov parvalue}\> - \> \begin{minipg2} 22 | Parameter value in the second parameter direction used when picking 23 | the curve. 24 | \end{minipg2}\\[0.3ex] 25 | \>Output Arguments:\\ 26 | \>\> {\fov curve}\> - \> \begin{minipg2} 27 | SISLCurve at constant parameter value. 28 | \end{minipg2}\\ 29 | \>\> {\fov stat} \> - \> Status messages\\ 30 | \>\>\>\>\> $> 0$ : warning\\ 31 | \>\>\>\>\> $= 0$ : ok\\ 32 | \>\>\>\>\> $< 0$ : error\\ 33 | \\ 34 | EXAMPLE OF USE\\ 35 | \> \{ \\ 36 | \>\> SISLSurf \> *{\fov surf};\\ 37 | \>\> double \> {\fov parvalue};\\ 38 | \>\> SISLCurve \> *{\fov curve};\\ 39 | \>\> int \> {\fov stat};\\ 40 | \>\> \ldots \\ 41 | \>\>s1436(\begin{minipg4} 42 | {\fov surf}, {\fov parvalue}, \&{\fov curve}, \&{\fov stat}); 43 | \end{minipg4}\\ 44 | \>\> \ldots \\ 45 | \> \} 46 | \end{tabbing} 47 | -------------------------------------------------------------------------------- /doc/manual/func/s1437.tex: -------------------------------------------------------------------------------- 1 | \subsection{Pick a curve lying in a surface, with constant first parameter value.} 2 | \funclabel{s1437} 3 | \begin{minipg1} 4 | Make constant parameter curve in the surface. The constant parameter value 5 | used is parvalue and is in the first parameter direction. 6 | \end{minipg1} \\ \\ 7 | SYNOPSIS\\ 8 | \>void s1436(\begin{minipg3} 9 | {\fov surf}, {\fov parvalue}, {\fov curve}, {\fov stat}) 10 | \end{minipg3}\\[0.3ex] 11 | \>\> SISLSurf \> *{\fov surf};\\ 12 | \>\> double \> {\fov parvalue};\\ 13 | \>\> SISLCurve \> **{\fov curve};\\ 14 | \>\> int \> *{\fov stat};\\ 15 | \\ 16 | ARGUMENTS\\ 17 | \>Input Arguments:\\ 18 | \>\> {\fov surf}\> - \> \begin{minipg2} 19 | Surface to pick curve from. 20 | \end{minipg2}\\[0.3ex] 21 | \>\> {\fov parvalue}\> - \> \begin{minipg2} 22 | Parameter value used when picking 23 | the curve at a constant 24 | parameter curve in first parameter direction. 25 | \end{minipg2}\\[0.3ex] 26 | \>Output Arguments:\\ 27 | \>\> {\fov curve}\> - \> \begin{minipg2} 28 | SISLCurve at constant parameter value. 29 | \end{minipg2}\\ 30 | \>\> {\fov stat} \> - \> Status messages\\ 31 | \>\>\>\>\> $> 0$ : warning\\ 32 | \>\>\>\>\> $= 0$ : ok\\ 33 | \>\>\>\>\> $< 0$ : error\\ 34 | EXAMPLE OF USE\\ 35 | \> \{ \\ 36 | \>\> SISLSurf \> *{\fov surf};\\ 37 | \>\> double \> {\fov parvalue};\\ 38 | \>\> SISLCurve \> *{\fov curve};\\ 39 | \>\> int \> {\fov stat};\\ 40 | \>\> \ldots \\ 41 | \>\>s1437(\begin{minipg4} 42 | {\fov surf}, {\fov parvalue}, \&{\fov curve}, \&{\fov stat}); 43 | \end{minipg4}\\ 44 | \>\> \ldots \\ 45 | \> \} 46 | \end{tabbing} 47 | -------------------------------------------------------------------------------- /doc/manual/func/s1439.tex: -------------------------------------------------------------------------------- 1 | \subsection{Pick a curve along a constant parameter line in a surface.} 2 | \funclabel{s1439} 3 | \begin{minipg1} 4 | Make a constant parameter curve along a given parameter direction in a surface. 5 | \end{minipg1} \\ \\ 6 | SYNOPSIS\\ 7 | \>void s1439(\begin{minipg3} 8 | {\fov ps1}, {\fov apar}, {\fov idirec}, {\fov rcurve}, {\fov jstat}) 9 | \end{minipg3}\\[0.3ex] 10 | \>\> SISLSurf \> *{\fov ps1};\\ 11 | \>\> double \> {\fov apar};\\ 12 | \>\> int \> {\fov idirec};\\ 13 | \>\> SISLCurve \> **{\fov rcurve};\\ 14 | \>\> int \> *{\fov jstat};\\ 15 | \\ 16 | ARGUMENTS\\ 17 | \>Input Arguments:\\ 18 | \>\> {\fov ps1}\> - \> \begin{minipg2} 19 | Pointer to the surface. 20 | \end{minipg2}\\ 21 | \>\> {\fov apar}\> - \> \begin{minipg2} 22 | Parameter value to use when picking out constant 23 | parameter curve. 24 | \end{minipg2}\\[0.8ex] 25 | \>\> {\fov idirec}\> - \> 26 | Parameter direction in which to pick (must be 1 or 2).\\ 27 | \\ 28 | \>Output Arguments:\\ 29 | \>\> {\fov rcurve}\> - \> \begin{minipg2} 30 | Constant parameter curve. 31 | \end{minipg2}\\ 32 | \>\> {\fov jstat} \> - \> Status messages\\ 33 | \>\>\>\>\> $> 0$ \> : Warning.\\ 34 | \>\>\>\>\> $= 0$ \> : Ok.\\ 35 | \>\>\>\>\> $< 0$ \> : Error.\\ 36 | \\ 37 | EXAMPLE OF USE\\ 38 | \> \{ \\ 39 | \>\> SISLSurf \> *{\fov ps1}; \, /* Must be defined */\\ 40 | \>\> double \> {\fov apar}; \, /* Must be defined */\\ 41 | \>\> int \> {\fov idirec} = 1;\\ 42 | \>\> SISLCurve \> *{\fov rcurve} = NULL;\\ 43 | \>\> int \> {\fov jstat} = 0;\\ 44 | \>\> \ldots \\ 45 | \>\>s1439(\begin{minipg4} 46 | {\fov ps1}, {\fov apar}, {\fov idirec}, \&{\fov rcurve}, \&{\fov jstat}); 47 | \end{minipg4}\\ 48 | \>\> \ldots \\ 49 | \> \} 50 | \end{tabbing} 51 | -------------------------------------------------------------------------------- /doc/manual/func/s1440.tex: -------------------------------------------------------------------------------- 1 | \section{Turn the Direction of the Surface Normal Vector.} 2 | \funclabel{s1440} 3 | \begin{minipg1} 4 | Interchange the two parameter directions used in the mathematical 5 | description of a surface and thereby change the direction of the 6 | normal vector of the surface. 7 | \end{minipg1} \\ \\ 8 | SYNOPSIS\\ 9 | \>void s1440(\begin{minipg3} 10 | {\fov surf}, {\fov newsurf}, {\fov stat}) 11 | \end{minipg3}\\[0.3ex] 12 | 13 | \>\> SISLSurf \> *{\fov surf};\\ 14 | \>\> SISLSurf \> **{\fov newsurf};\\ 15 | \>\> int \> *{\fov stat};\\ 16 | \\ 17 | ARGUMENTS\\ 18 | \>Input Arguments:\\ 19 | \>\> {\fov surf}\> - \> \begin{minipg2} 20 | Pointer to the original surface. 21 | \end{minipg2}\\ 22 | \>Output Arguments:\\ 23 | \>\> {\fov newsurf}\> - \> \begin{minipg2} 24 | Pointer to the surface where the parameter 25 | directions are interchanged. 26 | \end{minipg2}\\[0.3ex] 27 | \>\> {\fov stat} \> - \> Status messages\\ 28 | \>\>\>\>\> $> 0$ : warning\\ 29 | \>\>\>\>\> $= 0$ : ok\\ 30 | \>\>\>\>\> $< 0$ : error\\ 31 | \\ 32 | EXAMPLE OF USE\\ 33 | \> \{ \\ 34 | \>\> SISLSurf \> *{\fov surf}; \, /* Must be defined */\\ 35 | \>\> SISLSurf \> *{\fov newsurf} = NULL;\\ 36 | \>\> int \> {\fov stat} = 0;\\ 37 | \>\> \ldots \\ 38 | \>\>s1440(\begin{minipg4} 39 | {\fov surf}, \&{\fov newsurf}, \&{\fov stat}); 40 | \end{minipg4}\\ 41 | \>\> \ldots \\ 42 | \> \} 43 | \end{tabbing} 44 | -------------------------------------------------------------------------------- /doc/manual/func/s1441.tex: -------------------------------------------------------------------------------- 1 | \subsection{Compute volume between a B-spline surface and a point.} 2 | \funclabel{s1441} 3 | \begin{minipg1} 4 | Compute the volume of the object surrounded by the input surface and the 5 | surface defined by the reference point and the boundary of the input surface. The 6 | volume might have a negative value dependent on the "direction" of the surface 7 | relative to the reference point. When used on a closed surface, the routine 8 | gives as output the volume of the object surrounded by the surface. The 9 | difference between the volume calculated and the real volume will be less than 10 | (epssurf/the volume calculated). 11 | \end{minipg1} \\ \\ 12 | SYNOPSIS\\ 13 | \>void s1441 (\begin{minipg3} 14 | {\fov surf}, {\fov point}, {\fov dim}, {\fov epssurf}, {\fov epsge}, {\fov volume}, {\fov stat}) 15 | \end{minipg3}\\[0.3ex] 16 | 17 | \>\> SISLSurf \> *{\fov surf};\\ 18 | \>\> double \> {\fov point}[\,];\\ 19 | \>\> int \> {\fov dim};\\ 20 | \>\> double \> {\fov epssurf};\\ 21 | \>\> double \> {\fov epsge};\\ 22 | \>\> double \> *{\fov volume};\\ 23 | \>\> int \> *{\fov stat};\\ 24 | \\ 25 | ARGUMENTS\\ 26 | \>Input Arguments:\\ 27 | \>\> {\fov surf}\> - \> \begin{minipg2} 28 | Pointer to the surface. 29 | \end{minipg2}\\ 30 | \>\> {\fov point}\> - \> \begin{minipg2} 31 | Reference point in the volume computation. 32 | \end{minipg2}\\ 33 | \>\> {\fov dim}\> - \> \begin{minipg2} 34 | Dimension of the space in which the point and surface lie. 35 | \end{minipg2}\\ 36 | \>\> {\fov epssurf}\> - \> \begin{minipg2} 37 | Relative resolution used on surfaces. 38 | \end{minipg2} \\ 39 | \>\> {\fov epsge}\> - \> \begin{minipg2} 40 | Geometry resolution. 41 | \end{minipg2}\\ 42 | \\ 43 | \>Output Arguments:\\ 44 | \>\> {\fov volume}\> - \> \begin{minipg2} 45 | The volume calculated 46 | \end{minipg2}\\ 47 | \>\> {\fov stat} \> - \> Status messages\\ 48 | \>\>\>\>\> $> 0$ : warning\\ 49 | \>\>\>\>\> $= 0$ : ok\\ 50 | \>\>\>\>\> $< 0$ : error\\ 51 | \\ 52 | EXAMPLE OF USE\\ 53 | \> \{ \\ 54 | \>\> SISLSurf \> *{\fov surf};\\ 55 | \>\> double \> {\fov point[3]};\\ 56 | \>\> int \> {\fov dim = 3};\\ 57 | \>\> double \> {\fov epssurf};\\ 58 | \>\> double \> {\fov epsge};\\ 59 | \>\> double \> {\fov volume};\\ 60 | \>\> int \> {\fov stat};\\ 61 | \>\> \ldots \\ 62 | \>\>s1441 (\begin{minipg4} 63 | {\fov surf}, {\fov point}, {\fov dim}, {\fov epssurf}, {\fov epsge}, \&{\fov volume}, \&{\fov stat}); 64 | \end{minipg4}\\ 65 | \>\> \ldots \\ 66 | \> \} 67 | \end{tabbing} 68 | -------------------------------------------------------------------------------- /doc/manual/func/s1442.tex: -------------------------------------------------------------------------------- 1 | \subsection{Compute area, weight point and moment of inertia of a B-spline patch.} 2 | \funclabel{s1442} 3 | \begin{minipg1} 4 | Compute the area and the weight point of a surface by using recursive 5 | subdivision. The rotational momentum relative to a given axis is also 6 | calculated. The difference between the area computed and the real area of the 7 | surface is less than (epssurf/area computed). 8 | \end{minipg1} \\ \\ 9 | SYNOPSIS\\ 10 | \>void s1442(\begin{minipg3} 11 | {\fov surf}, {\fov point}, {\fov dir}, {\fov dim}, {\fov epssurf}, {\fov epsge}, {\fov weight}, {\fov area}, 12 | {\fov moment}, {\fov stat}) 13 | \end{minipg3}\\[0.3ex] 14 | 15 | \>\> SISLSurf \> *{\fov surf};\\ 16 | \>\> double \> {\fov point}[\,];\\ 17 | \>\> double \> {\fov dir}[\,];\\ 18 | \>\> int \> {\fov dim};\\ 19 | \>\> double \> {\fov epssurf};\\ 20 | \>\> double \> {\fov epsge};\\ 21 | \>\> double \> {\fov weight}[\,];\\ 22 | \>\> double \> *{\fov area};\\ 23 | \>\> double \> *{\fov moment};\\ 24 | \>\> int \> *{\fov stat};\\ 25 | \\ 26 | ARGUMENTS\\ 27 | \>Input Arguments:\\ 28 | \>\> {\fov surf}\> - \> \begin{minipg2} 29 | Pointer to the surface. 30 | \end{minipg2}\\ 31 | \>\> {\fov point}\> - \> \begin{minipg2} 32 | (Reference) point on the rotational axis. 33 | \end{minipg2}\\ 34 | \>\> {\fov dir}\> - \> \begin{minipg2} 35 | Direction of the rotational axis. 36 | \end{minipg2}\\ 37 | \>\> {\fov dim}\> - \> \begin{minipg2} 38 | Dimension of the space in which point and dir lie. 39 | \end{minipg2} \\ 40 | \>\> {\fov epssurf}\> - \> \begin{minipg2} 41 | Relative resolution used on surfaces. 42 | \end{minipg2}\\ 43 | \>\> {\fov epsge}\> - \> \begin{minipg2} 44 | Geometry resolution. 45 | \end{minipg2}\\ 46 | \\ 47 | \>Output Arguments:\\ 48 | \>\> {\fov weight}\> - \> \begin{minipg2} 49 | Area weight point. 50 | \end{minipg2}\\ 51 | \>\> {\fov area}\> - \> \begin{minipg2} 52 | The area calculated. 53 | \end{minipg2}\\ 54 | \>\> {\fov moment}\> - \> \begin{minipg2} 55 | Rotational weight moment. 56 | \end{minipg2}\\ 57 | \>\> {\fov stat} \> - \> Status messages\\ 58 | \>\>\>\>\> $> 0$ : warning\\ 59 | \>\>\>\>\> $= 0$ : ok\\ 60 | \>\>\>\>\> $< 0$ : error\\ 61 | \\ 62 | EXAMPLE OF USE\\ 63 | \> \{ \\ 64 | \>\> SISLSurf \> *surf;\\ 65 | \>\> double \> {\fov point}[3];\\ 66 | \>\> double \> {\fov dir}[3];\\ 67 | \>\> int \> {\fov dim} = 3;\\ 68 | \>\> double \> {\fov epssurf};\\ 69 | \>\> double \> {\fov epsge};\\ 70 | \>\> double \> {\fov weight}[3];\\ 71 | \>\> double \> {\fov area};\\ 72 | \>\> double \> {\fov moment};\\ 73 | \>\> int \> {\fov stat};\\ 74 | \>\> \ldots \\ 75 | \>\>s1442(\begin{minipg4} 76 | {\fov surf}, {\fov point}, {\fov dir}, {\fov dim}, {\fov epssurf}, {\fov epsge}, {\fov weight}, \&{\fov area}, 77 | \&{\fov moment}, \&{\fov stat}); 78 | \end{minipg4}\\ 79 | \>\> \ldots \\ 80 | \> \} 81 | \end{tabbing} 82 | -------------------------------------------------------------------------------- /doc/manual/func/s1451.tex: -------------------------------------------------------------------------------- 1 | \section{Check if a Curve is Degenerated.} 2 | \funclabel{s1451} 3 | \begin{minipg1} 4 | To check if a curve is degenerated. 5 | \end{minipg1} \\ \\ 6 | SYNOPSIS\\ 7 | \> void s1451(\begin{minipg3} 8 | {\fov pc1}, {\fov aepsge}, {\fov jdgen}, {\fov jstat}) 9 | \end{minipg3}\\[0.3ex] 10 | \>\> SISLCurve \> *{\fov pc1};\\ 11 | \>\> double \> {\fov aepsge};\\ 12 | \>\> int \> *{\fov jdgen};\\ 13 | \>\> int \> *{\fov jstat};\\ 14 | \\ 15 | ARGUMENTS\\ 16 | \>Input Arguments:\\ 17 | \>\> {\fov pc1} \> - \> Pointer to the curve to be tested.\\ 18 | \>\> {\fov aepsge} \> - \> 19 | \begin{minipg2} 20 | The curve is degenerate if all vertices lie 21 | within the distance aepsge from each other 22 | \end{minipg2}\\[0.8ex] 23 | \\ 24 | \>Output Arguments:\\ 25 | \>\> {\fov jdgen} \> - \> Degenerate indicator\\ 26 | \>\>\>\>\> $= 0$ : The curve is not degenerate.\\ 27 | \>\>\>\>\> $= 1$ : The curve is degenerate.\\ 28 | \>\> {\fov jstat} \> - \> Status message\\ 29 | \>\>\>\>\> $< 0$ : Error.\\ 30 | \>\>\>\>\> $= 0$ : Ok.\\ 31 | \>\>\>\>\> $> 0$ : Warning.\\ 32 | \\ 33 | EXAMPLE OF USE\\ 34 | \> \{ \\ 35 | \>\> SISLCurve \> *{\fov pc1}; \, /* Must be defined */\\ 36 | \>\> double \> {\fov aepsge} = 1.0e-5;\\ 37 | \>\> int \> *{\fov jdgen} = 0;\\ 38 | \>\> int \> *{\fov jstat} = 0;\\ 39 | \>\> \ldots \\ 40 | \>\>s1451(\begin{minipg4} 41 | {\fov pc1}, {\fov aepsge}, {\fov jdgen}, {\fov jstat}); 42 | \end{minipg4}\\ 43 | \>\> \ldots \\ 44 | \> \} 45 | \end{tabbing} 46 | -------------------------------------------------------------------------------- /doc/manual/func/s1452.tex: -------------------------------------------------------------------------------- 1 | \subsection{Offset surface.} 2 | \funclabel{s1452} 3 | \begin{minipg1} 4 | To make a B-spline surface approximating an offset surface using a given distance from the input surface. 5 | \end{minipg1} \\ \\ 6 | SYNOPSIS\\ 7 | \>void s1452(\begin{minipg3} 8 | {\fov surf}, {\fov epsge}, {\fov offdist}, {\fov newsurf}, {\fov stat}) 9 | \end{minipg3}\\[0.3ex] 10 | 11 | \>\> SISLSurf \> *{\fov surf};\\ 12 | \>\> double \> {\fov epsge};\\ 13 | \>\> double \> {\fov offdist};\\ 14 | \>\> SISLSurf \> **{\fov newsurf};\\ 15 | \>\> int \> *{\fov stat};\\ 16 | \\ 17 | ARGUMENTS\\ 18 | \>Input Arguments:\\ 19 | \>\> {\fov surf}\> - \> \begin{minipg2} 20 | Pointer to the surface from which the offset surface is to be made. 21 | \end{minipg2}\\[0.8ex] 22 | \>\> {\fov epsge}\> - \> \begin{minipg2} 23 | Accepted deviation between the true offset surface and the approximated 24 | offset surface. If a small tolerance is 25 | given, the execution time will be long. 26 | \end{minipg2}\\[0.3ex] 27 | \>\> {\fov offdist}\> - \> \begin{minipg2} 28 | The offset distance. If offdist is 29 | positive the offset will be along the 30 | positive direction of the normal vector, 31 | else along the negative 32 | direction. 33 | \end{minipg2}\\[0.3ex] 34 | \>Output Arguments:\\ 35 | \>\> {\fov newsurf}\> - \> \begin{minipg2} 36 | The produced offset surface. 37 | \end{minipg2}\\ 38 | \>\> {\fov stat} \> - \> Status messages\\ 39 | \>\>\>\>\> $> 0$ : warning\\ 40 | \>\>\>\>\> $= 0$ : ok\\ 41 | \>\>\>\>\> $< 0$ : error\\ 42 | EXAMPLE OF USE\\ 43 | \> \{ \\ 44 | \>\> SISLSurf \> *{\fov surf};\\ 45 | \>\> double \> {\fov epsge};\\ 46 | \>\> double \> {\fov offdist};\\ 47 | \>\> SISLSurf \> *{\fov newsurf};\\ 48 | \>\> int \> {\fov stat};\\ 49 | \>\> \ldots \\ 50 | \>\>s1452(\begin{minipg4} 51 | {\fov surf}, {\fov epsge}, {\fov offdist},\&{\fov newsurf}, \&{\fov stat}); 52 | \end{minipg4}\\ 53 | \>\> \ldots \\ 54 | \> \} 55 | \end{tabbing} 56 | -------------------------------------------------------------------------------- /doc/manual/func/s1508.tex: -------------------------------------------------------------------------------- 1 | \subsection{Create a rational lofted surface from a set of rational input-curves} 2 | \funclabel{s1508} 3 | \begin{minipg1} 4 | To create a rational lofted surface from a set of rational input-curves. The surface will 5 | be $C^1$ cubic in the lofting direction. 6 | \end{minipg1} \\ \\ 7 | SYNOPSIS\\ 8 | \> void s1508(\begin{minipg3} 9 | {\fov inbcrv}, {\fov vpcurv}, {\fov par\_arr}, {\fov rsurf}, {\fov jstat}) 10 | \end{minipg3}\\ 11 | \>\> int \> {\fov inbcrv};\\ 12 | \>\> SISLCurve \> *{\fov vpcurv[\,]};\\ 13 | \>\> double \> {\fov par\_arr[\,]};\\ 14 | \>\> SISLSurf \> **{\fov rsurf};\\ 15 | \>\> int \> *{\fov jstat};\\ 16 | \\ 17 | ARGUMENTS\\ 18 | \> Input Arguments:\\ 19 | \>\> {\fov inbcrv} \> - \> \begin{minipg2} 20 | Number of NURBS-curves in the curve set. 21 | \end{minipg2}\\ 22 | \>\> {\fov vpcurv} \> - \> \begin{minipg2} 23 | Array (length {\fov inbcrv}) of pointers to the curves in the curve-set. 24 | \end{minipg2}\\ 25 | \>\> {\fov par\_arr} \> - \> \begin{minipg2} 26 | The required parametrization, must be strictly increasing, 27 | length {\fov inbcrv}. 28 | \end{minipg2}\\ 29 | 30 | \> Output Arguments: \\ 31 | \>\> {\fov rsurf} \> - \> \begin{minipg2} 32 | Pointer to the NURBS surface produced. 33 | \end{minipg2}\\ 34 | \>\> {\fov jstat} \> - \> status message \\ 35 | \>\>\>\>\> $ < 0 $ : Error.\\ 36 | \>\>\>\>\> $ = 0 $ : Ok. \\ 37 | \>\>\>\>\> $ > 0 $ : Warning.\\ 38 | \\ 39 | EXAMPLE OF USE\\ 40 | \> \{ \\ 41 | 42 | \>\> int \> {\fov inbcrv} = 3;\\ 43 | \>\> SISLCurve \> *{\fov vpcurv[3]}; \, /* Must be defined */\\ 44 | \>\> double \> {\fov par\_arr[3]}; \, /* Must be defined */\\ 45 | \>\> SISLSurf \> *{\fov rsurf} = NULL;\\ 46 | \>\> int \> {\fov jstat} = 0;\\ 47 | \>\> \ldots \\ 48 | \>\> s1508({\fov inbcrv}, {\fov vpcurv}, {\fov par\_arr}, \&{\fov rsurf}, \&{\fov jstat}); \\ 49 | \>\> \ldots \\ 50 | \> \} 51 | 52 | 53 | \end{tabbing} 54 | 55 | -------------------------------------------------------------------------------- /doc/manual/func/s1520.tex: -------------------------------------------------------------------------------- 1 | \subsection{Create a NURBS rotational surface by rotating 2 | a curve around an axis over a given angle.} 3 | \funclabel{s1520} 4 | \begin{minipg1} 5 | To create a NURBS rotational surface by rotating 6 | a curve around an axis over a given angle. 7 | This will be an exact representation. 8 | \end{minipg1} \\ \\ 9 | SYNOPSIS\\ 10 | \>void s1520(\begin{minipg3} 11 | {\fov pc}, {\fov angle}, {\fov ep}, {\fov eaxis}, {\fov rs}, {\fov jstat}) 12 | \end{minipg3}\\[0.3ex] 13 | \>\> SISLCurve \> *{\fov pc};\\ 14 | \>\> double \> {\fov angle};\\ 15 | \>\> double \> {\fov ep}[\,];\\ 16 | \>\> double \> {\fov eaxis}[\,];\\ 17 | \>\> SISLSurf \> **{\fov rs};\\ 18 | \>\> int \> *{\fov jstat};\\ 19 | \\ 20 | ARGUMENTS\\ 21 | \>Input Arguments:\\ 22 | \>\> {\fov pc} \> - \> The curve to be rotated (NURBS or B-spline).\\ 23 | \>\> {\fov angle}\> - \> 24 | \begin{minipg2} 25 | The rotational angle. Counter clockwise around axis. 26 | If the absolute value of the angle is greater than 27 | $2\pi$ then a rotational surface closed in the 28 | rotation direction is made. 29 | \end{minipg2}\\[0.8ex] 30 | \>\> {\fov ep} \> - \> A point on the rotational axis.\\ 31 | \>\> {\fov eaxis}\> - \> Direction of the rotational axis.\\ 32 | \\ 33 | \>Output Arguments:\\ 34 | \>\> {\fov rs}\> - \> The surface produced (NURBS or B-spline).\\ 35 | \>\> {\fov jstat} \> - \> Status message\\ 36 | \>\>\>\>\> $< 0$ : Error.\\ 37 | \>\>\>\>\> $= 0$ : Ok.\\ 38 | \>\>\>\>\> $> 0$ : Warning.\\ 39 | \\ 40 | EXAMPLE OF USE\\ 41 | \> \{ \\ 42 | \>\> SISLCurve \> *{\fov pc};\\ 43 | \>\> double \> {\fov angle};\\ 44 | \>\> double \> {\fov ep}[3];\\ 45 | \>\> double \> {\fov eaxis}[3];\\ 46 | \>\> SISLSurf \> *{\fov rs} = NULL;\\ 47 | \>\> int \> {\fov jstat} = 0;\\ 48 | \>\> \ldots \\ 49 | \>s1520(\begin{minipg4} 50 | {\fov pc}, {\fov angle}, {\fov ep}, {\fov eaxis}, \&{\fov rs}, \&{\fov jstat}); 51 | \end{minipg4}\\ 52 | \>\> \ldots \\ 53 | \> \} 54 | \end{tabbing} 55 | -------------------------------------------------------------------------------- /doc/manual/func/s1542.tex: -------------------------------------------------------------------------------- 1 | \subsection{Evaluate the curve over a grid of m points. Only positions are evaluated.} 2 | \funclabel{s1542} 3 | \begin{minipg1} 4 | Evaluate the curve pointed at by pc1 over a m grid 5 | of points (x[i]). Only positions are evaluated. 6 | Do not apply in the rational case. 7 | \end{minipg1} \\ \\ 8 | SYNOPSIS\\ 9 | \> void s1542(\begin{minipg3} 10 | {\fov pc1}, {\fov m}, {\fov x}, {\fov eder}, {\fov jstat}) 11 | \end{minipg3}\\ 12 | \>\> SISLCurve \> *{\fov pc1};\\ 13 | \>\> int \> {\fov m};\\ 14 | \>\> double \> {\fov x}[\,];\\ 15 | \>\> double \> {\fov eder}[\,];\\ 16 | \>\> int \> *{\fov jstat};\\ 17 | \\ 18 | ARGUMENTS\\ 19 | \>Input Arguments:\\ 20 | \>\> {\fov pc1}\> - \> \begin{minipg2} 21 | Pointer to the curve to evaluate. 22 | \end{minipg2}\\ 23 | \>\> {\fov m}\> - \> \begin{minipg2} 24 | Number of grid points. 25 | \end{minipg2}\\ 26 | \>\> {\fov x}\> - \> \begin{minipg2} 27 | Array of parameter values of the grid. 28 | \end{minipg2}\\ 29 | \\ 30 | \>Output Arguments:\\ 31 | \>\> {\fov eder}\> - \> \begin{minipg2} 32 | Array where the positions of the curve 33 | are placed, dimension 34 | idim * m. 35 | The sequence is position at point x[0], 36 | followed by the same information at x[1], 37 | etc. 38 | \end{minipg2}\\ 39 | \>\> {\fov jstat}\> - \> status messages \\ 40 | \>\>\>\>\> $ = 0 $ : Ok.\\ 41 | \>\>\>\>\> $ < 0 $ : Error.\\ 42 | \\ 43 | EXAMPLE OF USE\\ 44 | \> \{ \\ 45 | 46 | \>\> SISLCurve \> *{\fov pc1}; \, /* Must be defined */\\ 47 | \>\> int \> {\fov m} = 25;\\ 48 | \>\> double \> {\fov x}[25];\\ 49 | \>\> double \> {\fov eder}[75]; /* Geometry space dimension times m */\\ 50 | \>\> int \> {\fov jstat} = 0;\\ \>\> \ldots \\ 51 | \>\>s1542(\begin{minipg4} 52 | {\fov pc1}, {\fov m}, {\fov x}, {\fov eder}, \&{\fov jstat}); 53 | \end{minipg4}\\ 54 | \>\> \ldots \\ 55 | \> \} 56 | \end{tabbing} 57 | -------------------------------------------------------------------------------- /doc/manual/func/s1600.tex: -------------------------------------------------------------------------------- 1 | \section{Mirror a Curve} 2 | \funclabel{s1600} 3 | \begin{minipg1} 4 | To mirror a curve around a plane. 5 | \end{minipg1} \\ \\ 6 | SYNOPSIS\\ 7 | \>void s1600(\begin{minipg3} 8 | {\fov oldcurve}, {\fov point}, {\fov normal}, {\fov dim}, {\fov newcurve}, {\fov stat}) 9 | \end{minipg3}\\[0.3ex] 10 | \>\> SISLCurve \> *{\fov oldcurve};\\ 11 | \>\> double \> {\fov point}[\,];\\ 12 | \>\> double \> {\fov normal}[\,];\\ 13 | \>\> int \> {\fov dim};\\ 14 | \>\> SISLCurve \> **{\fov newcurve};\\ 15 | \>\> int \> *{\fov stat};\\ 16 | \\ 17 | ARGUMENTS\\ 18 | \>Input Arguments:\\ 19 | \>\> {\fov oldcurve}\> - \> Pointer to original curve.\\ 20 | \>\> {\fov point} \> - \> A point in the plane.\\ 21 | \>\> {\fov normal} \> - \> Normal vector to the plane.\\ 22 | \>\> {\fov dim} \> - \> The dimension of the space.\\ 23 | \\ 24 | \>Output Arguments:\\ 25 | \>\> {\fov newcurve}\> - \> Pointer to the mirrored curve.\\ 26 | \>\> {\fov stat} \> - \> Status messages\\ 27 | \>\>\>\>\> $> 0$ : warning\\ 28 | \>\>\>\>\> $= 0$ : ok\\ 29 | \>\>\>\>\> $< 0$ : error\\ 30 | \\ 31 | EXAMPLE OF USE\\ 32 | \> \{ \\ 33 | \>\> SISLCurve \> *{\fov oldcurve}; \,/* Must be defined */\\ 34 | \>\> double \> {\fov point}[3]; \, /* Must be defined */\\ 35 | \>\> double \> {\fov normal}[3]; \,/* Must be defined */\\ 36 | \>\> int \> {\fov dim} = 3;\\ 37 | \>\> SISLCurve \> *{\fov newcurve} =NULL;\\ 38 | \>\> int \> {\fov stat} = 0;\\ 39 | \>\> \ldots \\ 40 | \>\>s1600(\begin{minipg4} 41 | {\fov oldcurve}, {\fov point}, {\fov normal}, {\fov dim}, \&{\fov newcurve}, \&{\fov stat}); 42 | \end{minipg4}\\ 43 | \>\> \ldots \\ 44 | \> \} \\ 45 | \end{tabbing} 46 | -------------------------------------------------------------------------------- /doc/manual/func/s1601.tex: -------------------------------------------------------------------------------- 1 | \section{Mirror a Surface} 2 | \funclabel{s1601} 3 | \begin{minipg1} 4 | Mirror a surface about a plane. 5 | \end{minipg1} \\ \\ 6 | SYNOPSIS\\ 7 | \>void s1601(\begin{minipg3} 8 | {\fov psurf}, {\fov epoint}, {\fov enorm}, {\fov idim}, {\fov rsurf}, {\fov jstat}) 9 | \end{minipg3}\\[0.3ex] 10 | \>\> SISLSurf \> *{\fov psurf};\\ 11 | \>\> double \> {\fov epoint}[\,];\\ 12 | \>\> double \> {\fov enorm}[\,];\\ 13 | \>\> int \> {\fov idim};\\ 14 | \>\> SISLSurf \> **{\fov rsurf};\\ 15 | \>\> int \> *{\fov jstat};\\ 16 | \\ 17 | ARGUMENTS\\ 18 | \>Input Arguments:\\ 19 | \>\> {\fov psurf} \> - \> The input surface.\\ 20 | \>\> {\fov epoint}\> - \> A point in the plane.\\ 21 | \>\> {\fov enorm} \> - \> The normal vector to the plane.\\ 22 | \>\> {\fov idim} \> - \> 23 | \begin{minipg2} 24 | The dimension of the space, must be the same as the surface. 25 | \end{minipg2}\\[0.8ex] 26 | \>Output Arguments:\\ 27 | \>\> {\fov rsurf} \> - \> Pointer to the mirrored surface.\\ 28 | \>\> {\fov jstat} \> - \> Status message\\ 29 | \>\>\>\>\> $< 0$ : Error.\\ 30 | \>\>\>\>\> $= 0$ : Ok.\\ 31 | \>\>\>\>\> $> 0$ : Warning.\\ 32 | EXAMPLE OF USE\\ 33 | \> \{ \\ 34 | \>\> SISLSurf \> *{\fov psurf}; \, /* Must be defined */\\ 35 | \>\> double \> {\fov epoint}[3]; \, /* Must be defined */\\ 36 | \>\> double \> {\fov enorm}[3]; \, /* Must be defined */\\ 37 | \>\> int \> {\fov idim} = 3;\\ 38 | \>\> SISLSurf \> *{\fov rsurf} = NULL;\\ 39 | \>\> int \> {\fov jstat} = 0;\\ 40 | \>\> \ldots \\ 41 | \>\>s1601(\begin{minipg4} 42 | {\fov psurf}, {\fov epoint}, {\fov enorm}, {\fov idim}, \&{\fov rsurf}, \&{\fov jstat}); 43 | \end{minipg4}\\ 44 | \>\> \ldots \\ 45 | \> \} 46 | \end{tabbing} 47 | -------------------------------------------------------------------------------- /doc/manual/func/s1602.tex: -------------------------------------------------------------------------------- 1 | \subsection{Compute a curve interpolating a straight line between two points.} 2 | \funclabel{s1602} 3 | \begin{minipg1} 4 | To make a straight line represented as a B-spline curve between two points. 5 | \end{minipg1}\\ \\ 6 | SYNOPSIS\\ 7 | \>void s1602(\begin{minipg3} 8 | {\fov startpt}, {\fov endpt}, {\fov order}, {\fov dim}, {\fov startpar}, {\fov endpar}, 9 | {\fov curve}, {\fov stat}) 10 | \end{minipg3}\\[0.3ex] 11 | \>\> double \> {\fov startpt}[\,];\\ 12 | \>\> double \> {\fov endpt}[\,];\\ 13 | \>\> int \> {\fov order};\\ 14 | \>\> int \> {\fov dim};\\ 15 | \>\> double \> {\fov startpar};\\ 16 | \>\> double \> *{\fov endpar};\\ 17 | \>\> SISLCurve \> **{\fov curve};\\ 18 | \>\> int \> *{\fov stat};\\ 19 | \newpagetabs 20 | ARGUMENTS\\ 21 | \>Input Arguments:\\ 22 | \>\> {\fov startpt} \> - \> Start point of the straight line\\ 23 | \>\> {\fov endpt} \> - \> End point of the straight line\\ 24 | \>\> {\fov order} \> - \> The order of the curve to be made.\\ 25 | \>\> {\fov dim} \> - \> The dimension of the geometric space\\ 26 | \>\> {\fov startpar} \> - \> Start value of the parameterization of the curve\\ 27 | \\ 28 | \>Output Arguments:\\ 29 | \>\> {\fov endpar }\> - \> Parameter value used at the end of the curve\\ 30 | \>\> {\fov curve} \> - \> Pointer to the B-spline curve\\ 31 | \>\> {\fov stat} \> - \> Status messages\\ 32 | \>\>\>\>\> $> 0$ : warning\\ 33 | \>\>\>\>\> $= 0$ : ok\\ 34 | \>\>\>\>\> $< 0$ : error\\ 35 | \\ 36 | EXAMPLE OF USE\\ 37 | \> \{ \\ 38 | \>\> double \>{\fov startpt}[2];\\ 39 | \>\> double \>{\fov endpt}[2];\\ 40 | \>\> int \>{\fov order}=2; /* If a higher order is requested will a degree \\ 41 | \>\>\>\>\> one curve be constructed and degree raising \\ 42 | \>\>\>\>\> performed to reach the requested order */ \\ 43 | \>\> int \>{\fov dim}=2; /* Corresponds to the number of parameters \\ 44 | \>\>\>\>\> in startpt and endpt */\\ 45 | \>\> double \>{\fov startpar}=0.0;\\ 46 | \>\> double \>{\fov endpar};\\ 47 | \>\> SISLCurve \>*{\fov curve}=NULL;\\ 48 | \>\> int \>{\fov stat}=0;\\ 49 | \>\> \ldots \\ 50 | \>\>s1602(\begin{minipg4} 51 | {\fov startpt}, {\fov endpt}, {\fov order}, {\fov dim}, 52 | {\fov startpar}, \&{\fov endpar}, \&{\fov curve}, \&{\fov stat}); 53 | \end{minipg4}\\ 54 | \>\> \ldots \\ 55 | \> \} \\ 56 | \end{tabbing} 57 | -------------------------------------------------------------------------------- /doc/manual/func/s1603.tex: -------------------------------------------------------------------------------- 1 | \section{Pick the Parameter Ranges of a Surface} 2 | \funclabel{s1603} 3 | \begin{minipg1} 4 | To pick the parameter ranges of a surface. 5 | \end{minipg1} \\ \\ 6 | SYNOPSIS\\ 7 | \>void s1603(\begin{minipg3} 8 | {\fov surf}, {\fov min1}, {\fov min2}, {\fov max1}, {\fov max2}, {\fov stat}) 9 | \end{minipg3}\\[0.3ex] 10 | 11 | \>\> SISLSurf \> *{\fov surf};\\ 12 | \>\> double \> *{\fov min1};\\ 13 | \>\> double \> *{\fov min2};\\ 14 | \>\> double \> *{\fov max1};\\ 15 | \>\> double \> *{\fov max2};\\ 16 | \>\> int \> *{\fov stat};\\ 17 | \\ 18 | ARGUMENTS\\ 19 | \>Input Arguments:\\ 20 | \>\> {\fov surf}\> - \> \begin{minipg2} 21 | The surface. 22 | \end{minipg2}\\ 23 | \\ 24 | \>Output Arguments:\\ 25 | \>\> {\fov min1}\> - \> \begin{minipg2} 26 | Start parameter in the first parameter direction. 27 | \end{minipg2}\\ 28 | \>\> {\fov min2}\> - \> \begin{minipg2} 29 | Start parameter in the second parameter direction. 30 | \end{minipg2}\\ 31 | \>\> {\fov max1}\> - \> \begin{minipg2} 32 | End parameter in the first parameter direction. 33 | \end{minipg2}\\ 34 | \>\> {\fov max2}\> - \> \begin{minipg2} 35 | End parameter in the second parameter direction. 36 | \end{minipg2}\\ 37 | \>\> {\fov stat} \> - \> Status messages\\ 38 | \>\>\>\>\> $> 0$ : warning\\ 39 | \>\>\>\>\> $= 0$ : ok\\ 40 | \>\>\>\>\> $< 0$ : error\\ 41 | \\ 42 | EXAMPLE OF USE\\ 43 | \> \{ \\ 44 | \>\> SISLSurf \> *{\fov surf}; \, /* Must be defined */\\ 45 | \>\> double \> {\fov min1};\\ 46 | \>\> double \> {\fov min2};\\ 47 | \>\> double \> {\fov max1};\\ 48 | \>\> double \> {\fov max2};\\ 49 | \>\> int \> {\fov stat} = 0;\\ 50 | \>\> \ldots \\ 51 | \>\>s1603(\begin{minipg4} 52 | {\fov surf}, \&{\fov min1}, \&{\fov min2}, \&{\fov max1}, \&{\fov max2}, \&{\fov stat}); 53 | \end{minipg4}\\ 54 | \>\> \ldots \\ 55 | \> \} 56 | \end{tabbing} 57 | -------------------------------------------------------------------------------- /doc/manual/func/s1610.tex: -------------------------------------------------------------------------------- 1 | \subsection{Draw ``polygons'' in a surface using a recursive algorithm testing for 2 | planarity of the subdivided parts.} 3 | \funclabel{s1610} 4 | \begin{minipg1} 5 | To draw a surface using recursive subdivision. 6 | This drawing function is slower than the one drawing constant parameter 7 | lines, s1237() (page~\pageref{s1237}). But the recursive algorithm 8 | will guarantee that all variations in the surface greater 9 | than the surface resolution will be drawn. 10 | \end{minipg1} \\ \\ 11 | SYNOPSIS\\ 12 | \>void s1610(\begin{minipg3} 13 | {\fov surf}, {\fov epscur}, {\fov epssur}, {\fov stat}) 14 | \end{minipg3}\\[0.3ex] 15 | \>\> SISLSurf \> *{\fov surf};\\ 16 | \>\> double \> {\fov epscur};\\ 17 | \>\> double \> {\fov epssur};\\ 18 | \>\> int \> *{\fov stat};\\ 19 | \\ 20 | ARGUMENTS\\ 21 | \>Input Arguments:\\ 22 | \>\> {\fov surf}\> - \> \begin{minipg2} 23 | The NURBS surface to be drawn. 24 | \end{minipg2}\\ 25 | \>\> {\fov epscur}\> - \> \begin{minipg2} 26 | Geometry resolution for curve. 27 | The maximal distance allowed between 28 | the curves 29 | drawn and the surface. 30 | \end{minipg2}\\[0.8ex] 31 | \>\> {\fov epssur}\> - \> \begin{minipg2} 32 | Geometry resolution for surface. 33 | \end{minipg2}\\ 34 | \\ 35 | \>Output Arguments:\\ 36 | \>\> {\fov stat} \> - \> Status messages\\ 37 | \>\>\>\>\> $> 0$ : warning\\ 38 | \>\>\>\>\> $= 0$ : ok\\ 39 | \>\>\>\>\> $< 0$ : error\\ 40 | \\ 41 | NOTE\\ 42 | \>\begin{minipg6} 43 | This function calls s6drawseq() which 44 | is device dependent. Before using the function make sure 45 | you have a version of s6drawseq() 46 | interfaced to your graphic package. 47 | More about s6drawseq() on page~\pageref{s6drawseq}. 48 | \end{minipg6} 49 | \\ 50 | \newpagetabs 51 | EXAMPLE OF USE\\ 52 | \> \{ \\ 53 | \>\> SISLSurf \> *{\fov surf};\\ 54 | \>\> double \> {\fov epscur};\\ 55 | \>\> double \> {\fov epssur};\\ 56 | \>\> int \> {\fov stat};\\ 57 | \>\> \ldots \\ 58 | \>\>s1610(\begin{minipg4} 59 | {\fov surf}, {\fov epscur}, {\fov epssur}, \&{\fov stat}); 60 | \end{minipg4}\\ 61 | \>\> \ldots \\ 62 | \> \} 63 | \end{tabbing} 64 | -------------------------------------------------------------------------------- /doc/manual/func/s1613.tex: -------------------------------------------------------------------------------- 1 | \subsection{Approximate a curve with a sequence of straight lines.} 2 | \funclabel{s1613} 3 | \begin{minipg1} 4 | To calculate a set of points on a curve. The straight lines between the 5 | points will not deviate more than {\fov epsge} from the curve at any 6 | point. The generated points will have the same spatial dimension as 7 | the input curve. 8 | \end{minipg1} \\ \\ 9 | SYNOPSIS\\ 10 | \>void s1613(\begin{minipg3} 11 | {\fov curve}, {\fov epsge}, {\fov points}, {\fov numpoints}, {\fov stat}) 12 | \end{minipg3}\\[0.3ex] 13 | \>\> SISLCurve \> *{\fov curve};\\ 14 | \>\> double \> {\fov epsge};\\ 15 | \>\> double \> **{\fov points};\\ 16 | \>\> int \> *{\fov numpoints};\\ 17 | \>\> int \> *{\fov stat};\\ 18 | \\ 19 | ARGUMENTS\\ 20 | \>Input Arguments:\\ 21 | \>\> {\fov curve} \> - \> \begin{minipg2} 22 | The input curve. 23 | \end{minipg2}\\ 24 | \>\> {\fov epsge}\> - \> \begin{minipg2} 25 | Geometry resolution, maximum distance allowed 26 | between the curve and the straight lines that are to be 27 | calculated. 28 | \end{minipg2}\\[0.8ex] 29 | \>Output Arguments:\\ 30 | \>\> {\fov points} \> - \> \begin{minipg2} 31 | Calculated points,\\ 32 | (a vector of 33 | $numpoints\times curve${\tt ->}$idim$ elements). 34 | \end{minipg2}\\[0.3ex] 35 | \>\> {\fov numpoints}\> - \>\begin{minipg2} 36 | Number of calculated points. 37 | \end{minipg2}\\ 38 | \>\> {\fov stat} \> - \> Status messages\\ 39 | \>\>\>\>\> $> 0$ : warning\\ 40 | \>\>\>\>\> $= 0$ : ok\\ 41 | \>\>\>\>\> $< 0$ : error\\ 42 | EXAMPLE OF USE\\ 43 | \> \{ \\ 44 | \>\> SISLCurve \> *{\fov curve}; \,/* Must be defined */\\ 45 | \>\> double \> {\fov epsge}; \, /* Must be defined */\\ 46 | \>\> double \> *{\fov points} = NULL;\\ 47 | \>\> int \> {\fov numpoints} = 0;\\ 48 | \>\> int \> {\fov stat} = 0;\\ 49 | \>\> \ldots \\ 50 | \>\>s1613(\begin{minipg4} 51 | {\fov curve}, {\fov epsge}, \&{\fov points}, \&{\fov numpoints}, \&{\fov stat}); 52 | \end{minipg4}\\ 53 | \>\> \ldots \\ 54 | \> \} 55 | \end{tabbing} 56 | -------------------------------------------------------------------------------- /doc/manual/func/s1630.tex: -------------------------------------------------------------------------------- 1 | \subsection{Compute a curve using the input points as 2 | controlling \mbox{vertices}, automatic parameterization.} 3 | \funclabel{s1630} 4 | \begin{minipg1} 5 | To compute a curve using the input points as controlling 6 | vertices. The distances between the points are used as 7 | parametrization. 8 | The output will be represented as a B-spline curve. 9 | \end{minipg1}\\ \\ 10 | SYNOPSIS\\ 11 | \>void s1630(\begin{minipg3} 12 | {\fov epoint}, {\fov inbpnt}, {\fov astpar}, {\fov iopen}, {\fov idim}, {\fov ik}, {\fov rc}, {\fov jstat}) 13 | \end{minipg3}\\[0.3ex] 14 | \>\> double \> {\fov epoint}[\,];\\ 15 | \>\> int \> {\fov inbpnt};\\ 16 | \>\> double \> {\fov astpar};\\ 17 | \>\> int \> {\fov iopen};\\ 18 | \>\> int \> {\fov idim};\\ 19 | \>\> int \> {\fov ik};\\ 20 | \>\> SISLCurve \> **{\fov rc};\\ 21 | \>\> int \> *{\fov jstat};\\ 22 | \\ 23 | ARGUMENTS\\ 24 | \>Input Arguments:\\ 25 | \>\> {\fov epoint} \> - \> 26 | \begin{minipg2} 27 | The array containing the points to be used as 28 | controlling vertices of the B-spline curve. 29 | \end{minipg2}\\[0.8ex] 30 | \>\> {\fov inbpnt} \> - \> No. of points in epoint.\\ 31 | \>\> {\fov astpar} \> - \> 32 | \begin{minipg2} 33 | Parameter value to be used at the start of the curve. 34 | \end{minipg2}\\[0.8ex] 35 | \>\> {\fov iopen} \> - \> 36 | \begin{minipg2} 37 | Open/closed/periodic condition. 38 | \end{minipg2}\\[0.8ex] 39 | \>\>\>\> $=-1$ \> : Closed and periodic.\\ 40 | \>\>\>\> $=0$ \> : Closed.\\ 41 | \>\>\>\> $=1$ \> : Open.\\ 42 | \>\> {\fov idim} \> - \> The dimension of the space.\\ 43 | \>\> {\fov ik} \> - \> The order of the spline curve to be produced.\\ 44 | \\ 45 | \>Output Arguments:\\ 46 | \>\> {\fov rc} \> - \> Pointer to the B-spline curve.\\ 47 | \>\> {\fov jstat}\> - \> Status message\\ 48 | \>\>\>\>\> $< 0$ : Error.\\ 49 | \>\>\>\>\> $= 0$ : Ok.\\ 50 | \>\>\>\>\> $> 0$ : Warning.\\ 51 | \newpagetabs 52 | EXAMPLE OF USE\\ 53 | \> \{ \\ 54 | \>\> double \> {\fov epoint}[30]; \, /* Must be defined */ \\ 55 | \>\> int \> {\fov inbpnt} = 10;\\ 56 | \>\> double \> {\fov astpar} = 0.0;\\ 57 | \>\> int \> {\fov iopen} = 1;\\ 58 | \>\> int \> {\fov idim} = 3;\\ 59 | \>\> int \> {\fov ik} = 4;\\ 60 | \>\> SISLCurve \> *{\fov rc} = NULL;\\ 61 | \>\> int \> {\fov jstat} = 0;\\ 62 | \>\> \ldots \\ 63 | \>\>s1630(\begin{minipg4} 64 | {\fov epoint}, {\fov inbpnt}, {\fov astpar}, {\fov iopen}, {\fov idim}, {\fov ik}, \&{\fov rc}, \&{\fov jstat}); 65 | \end{minipg4}\\ 66 | \>\> \ldots \\ 67 | \> \} 68 | \end{tabbing} 69 | -------------------------------------------------------------------------------- /doc/manual/func/s1706.tex: -------------------------------------------------------------------------------- 1 | \section{Reverse the Orientation of a Curve.} 2 | \funclabel{s1706} 3 | \begin{minipg1} 4 | Turn the direction of a curve by reversing the ordering of the 5 | coefficients. 6 | The start parameter value of the new curve is the same as the start 7 | parameter value of the old curve. 8 | This routine turns the direction of the orginal curve. 9 | If you want a copy with a turned direction, just make a copy and turn 10 | the direction of the copy. 11 | \end{minipg1} \\ \\ 12 | SYNOPSIS\\ 13 | \>void s1706(\begin{minipg3} 14 | {\fov curve}) 15 | \end{minipg3}\\[0.3ex] 16 | \>\> SISLCurve \> *{\fov curve};\\ 17 | \\ 18 | ARGUMENTS\\ 19 | \>Input Arguments:\\ 20 | \>\> {\fov curve} \> - \> The curve to turn.\\ 21 | \\ 22 | EXAMPLE OF USE\\ 23 | \> \{ \\ 24 | \>\> SISLCurve \> *{\fov curve}; \, /* Must be defined */\\ 25 | \>\> \ldots \\ 26 | \>\>s1706(\begin{minipg4} 27 | {\fov curve}); 28 | \end{minipg4}\\ 29 | \>\> \ldots \\ 30 | \> \} 31 | \end{tabbing} 32 | -------------------------------------------------------------------------------- /doc/manual/func/s1710.tex: -------------------------------------------------------------------------------- 1 | \subsection{Subdivide a curve at a given parameter value.} 2 | \funclabel{s1710} 3 | \begin{minipg1} 4 | Subdivide a curve at a given parameter value.\\ 5 | NOTE: When the curve is periodic (i.e.\ when the {\fov cuopen} flag of 6 | the curve has value $=-1$), this function will return only ONE curve 7 | through {\fov rcnew1}. This curve is the same geometric curve as {\fov pc1}, 8 | but is represented on a closed basis, i.e.\ with k-tuple start/end 9 | knots and coinciding start/end coefficients. 10 | The {\fov cuopen} flag of the curve will then be set to closed ($=0$) 11 | and a status value {\fov jstat} equal to 2 will be returned. 12 | \end{minipg1} \\ \\ 13 | SYNOPSIS\\ 14 | \>void s1710(\begin{minipg3} 15 | {\fov pc1}, {\fov apar}, {\fov rcnew1}, {\fov rcnew2}, {\fov jstat}) 16 | \end{minipg3}\\[0.3ex] 17 | \>\> SISLCurve \> *{\fov pc1};\\ 18 | \>\> double \> {\fov apar};\\ 19 | \>\> SISLCurve \> **{\fov rcnew1};\\ 20 | \>\> SISLCurve \> **{\fov rcnew2};\\ 21 | \>\> int \> *{\fov jstat};\\ 22 | \\ 23 | ARGUMENTS\\ 24 | \>Input Arguments:\\ 25 | \>\> {\fov pc1} \> - \> The curve to subdivide.\\ 26 | \>\> {\fov apar} \> - \> Parameter value at which to subdivide.\\ 27 | \\ 28 | \>Output Arguments:\\ 29 | \>\> {\fov rcnew1} \> - \> First part of the subdivided curve.\\ 30 | \>\> {\fov rcnew2} \> - \> 31 | \begin{minipg2} 32 | Second part of the subdivided curve. 33 | If the parameter value is at the end of a 34 | curve NULL pointers might be returned 35 | \end{minipg2}\\[0.8ex] 36 | \>\> {\fov jstat} \> - \> Status messages\\ 37 | \>\>\>\>\> $= 5$ : \begin{minipg5} 38 | Parameter value at end of 39 | curve, $rcnew1$=NULL or 40 | {\fov rcnew2}=NULL. 41 | \end{minipg5}\\[0.8ex] 42 | \>\>\>\>\> $= 2$ : {\fov pc1} periodic, 43 | {\fov rcnew2}=NULL.\\ 44 | \>\>\>\>\> $> 0$ : Warning.\\ 45 | \>\>\>\>\> $= 0$ : Ok.\\ 46 | \>\>\>\>\> $< 0$ : Error.\\ 47 | \newpagetabs 48 | EXAMPLE OF USE\\ 49 | \> \{ \\ 50 | \>\> SISLCurve \> *{\fov pc1}; \, /* Must be defined */\\ 51 | \>\> double \> {\fov apar}; \, /* Must be defined */\\ 52 | \>\> SISLCurve \> *{\fov rcnew1} = NULL;\\ 53 | \>\> SISLCurve \> *{\fov rcnew2} = NULL;\\ 54 | \>\> int \> {\fov jstat} = 0;\\ 55 | \>\> \ldots \\ 56 | \>s1710(\begin{minipg4} 57 | {\fov pc1}, {\fov apar}, \&{\fov rcnew1}, \&{\fov rcnew2}, \&{\fov jstat}); 58 | \end{minipg4}\\ 59 | \>\> \ldots \\ 60 | \> \} 61 | \end{tabbing} 62 | -------------------------------------------------------------------------------- /doc/manual/func/s1711.tex: -------------------------------------------------------------------------------- 1 | \subsection{Subdivide a surface along a given parameter line.} 2 | \funclabel{s1711} 3 | \begin{minipg1} 4 | Subdivide a surface along a given internal parameter line. 5 | \end{minipg1} \\ \\ 6 | SYNOPSIS\\ 7 | \>void s1711(\begin{minipg3} 8 | {\fov surf}, {\fov pardir}, {\fov parval}, {\fov newsurf1}, {\fov newsurf2}, {\fov stat}) 9 | \end{minipg3}\\[0.3ex] 10 | \>\> SISLSurf \> *{\fov surf};\\ 11 | \>\> int \> {\fov pardir};\\ 12 | \>\> double \> {\fov parval};\\ 13 | \>\> SISLSurf \> **{\fov newsurf1};\\ 14 | \>\> SISLSurf \> **{\fov newsurf2};\\ 15 | \>\> int \> *{\fov stat};\\ 16 | \\ 17 | ARGUMENTS\\ 18 | \>Input Arguments:\\ 19 | \>\> {\fov surf} \> - \> Surface to subdivide.\\ 20 | \>\> {\fov pardir} \> - \> \begin{minipg2} 21 | Value used to indicate in which 22 | parameter direction the subdivision is to take place. 23 | \end{minipg2}\\[0.8ex] 24 | \>\>\>\>\> $= 1$\> : First parameter direction.\\ 25 | \>\>\>\>\> $= 2$\> : Second parameter direction.\\ 26 | \>\> {\fov parval} \> - \> \begin{minipg2} 27 | Parameter value at which to subdivide. 28 | \end{minipg2}\\ 29 | \\ 30 | \>Output Arguments:\\ 31 | \>\> {\fov newsurf1}\> - \>\begin{minipg2} 32 | First part of the subdivided surface. 33 | \end{minipg2}\\ 34 | \>\> {\fov newsurf2}\> - \>\begin{minipg2} 35 | Second part of the subdivided surface. 36 | \end{minipg2}\\ 37 | \>\> {\fov stat} \> - \> Status messages\\ 38 | \>\>\>\>\> $> 0$ : warning\\ 39 | \>\>\>\>\> $= 0$ : ok\\ 40 | \>\>\>\>\> $< 0$ : error\\ 41 | \\ %\newpagetabs 42 | EXAMPLE OF USE\\ 43 | \> \{ \\ 44 | \>\> SISLSurf \> *{\fov surf}; \, /* Must be defined */\\ 45 | \>\> int \> {\fov pardir} = 2;\\ 46 | \>\> double \> {\fov parval}; \, /* Must be defined */\\ 47 | \>\> SISLSurf \> *{\fov newsurf1} = NULL;\\ 48 | \>\> SISLSurf \> *{\fov newsurf2} = NULL;\\ 49 | \>\> int \> {\fov stat} = 0;\\ 50 | \>\> \ldots \\ 51 | \>\>s1711(\begin{minipg4} 52 | {\fov surf}, {\fov pardir}, {\fov parval}, \&{\fov newsurf1}, \&{\fov newsurf2}, \&{\fov stat}); 53 | \end{minipg4}\\ 54 | \>\> \ldots \\ 55 | \> \} 56 | \end{tabbing} 57 | -------------------------------------------------------------------------------- /doc/manual/func/s1712.tex: -------------------------------------------------------------------------------- 1 | \subsection{Pick a part of a curve.} 2 | \funclabel{s1712} 3 | \begin{minipg1} 4 | To pick one part of a curve and make a new curve of the part. If 5 | $endparvoid s1712(\begin{minipg3} 11 | {\fov curve}, {\fov begpar}, {\fov endpar}, {\fov newcurve}, {\fov stat}) 12 | \end{minipg3}\\[0.3ex] 13 | \>\> SISLCurve \> *{\fov curve};\\ 14 | \>\> double \> {\fov begpar};\\ 15 | \>\> double \> {\fov endpar};\\ 16 | \>\> SISLCurve \> **{\fov newcurve};\\ 17 | \>\> int \> *{\fov stat};\\ 18 | \\ 19 | ARGUMENTS\\ 20 | \>Input Arguments:\\ 21 | \>\> {\fov curve} \> - \> The curve to pick a part from.\\ 22 | \>\> {\fov begpar} \> - \> \begin{minipg2} 23 | Start parameter value of the part curve 24 | to be picked. 25 | \end{minipg2}\\ 26 | \>\> {\fov endpar} \> - \> \begin{minipg2} 27 | End parameter value of the part curve 28 | to be picked. 29 | \end{minipg2}\\ 30 | \\ 31 | \>Output Arguments:\\ 32 | \>\> {\fov newcurve}\> - \>\begin{minipg2} 33 | The new curve that is a part of the original curve. 34 | \end{minipg2}\\ 35 | \>\> {\fov stat} \> - \> Status messages\\ 36 | \>\>\>\>\> $> 0$ : warning\\ 37 | \>\>\>\>\> $= 0$ : ok\\ 38 | \>\>\>\>\> $< 0$ : error\\ 39 | \\ 40 | EXAMPLE OF USE\\ 41 | \> \{ \\ 42 | \>\> SISLCurve \> *{\fov curve}; \, /* Must be defined */\\ 43 | \>\> double \> {\fov begpar}; \, /* Must be defined */\\ 44 | \>\> double \> {\fov endpar}; \, /* Must be defined */\\ 45 | \>\> SISLCurve \> *{\fov newcurve} = NULL;\\ 46 | \>\> int \> stat = 0;\\ 47 | \>\> \ldots \\ 48 | \>\>s1712(\begin{minipg4} 49 | {\fov curve}, {\fov begpar}, {\fov endpar}, \&{\fov newcurve}, \&{\fov stat}); 50 | \end{minipg4}\\ 51 | \>\> \ldots \\ 52 | \> \} 53 | \end{tabbing} 54 | -------------------------------------------------------------------------------- /doc/manual/func/s1713.tex: -------------------------------------------------------------------------------- 1 | \subsection{Pick a part of a closed curve.} 2 | \funclabel{s1713} 3 | \begin{minipg1} 4 | To pick one part of a closed curve and make a new curve of that 5 | part. If the routine is used on an open curve and $endpar\leq begpar$, 6 | the last part of the curve is translated so that the end of the curve 7 | joins the start. 8 | \end{minipg1} \\ \\ 9 | SYNOPSIS\\ 10 | \>void s1713(\begin{minipg3} 11 | {\fov curve}, {\fov begpar}, {\fov endpar}, {\fov newcurve}, {\fov stat}) 12 | \end{minipg3}\\[0.3ex] 13 | \>\> SISLCurve \> *{\fov curve};\\ 14 | \>\> double \> {\fov begpar};\\ 15 | \>\> double \> {\fov endpar};\\ 16 | \>\> SISLCurve \> **{\fov newcurve};\\ 17 | \>\> int \> *{\fov stat};\\ 18 | \\ 19 | ARGUMENTS\\ 20 | \>Input Arguments:\\ 21 | \>\> {\fov curve} \> - \> The curve to pick a part from.\\ 22 | \>\> {\fov begpar} \> - \> \begin{minipg2} 23 | Start parameter value of the part of the curve 24 | to be picked. 25 | \end{minipg2}\\[0.3ex] 26 | \>\> {\fov endpar} \> - \> \begin{minipg2} 27 | End parameter value of the part of the curve 28 | to be picked. 29 | \end{minipg2}\\ 30 | \\ 31 | \>Output Arguments:\\ 32 | \>\> {\fov newcurve}\> - \>\begin{minipg2} 33 | The new curve that is a part of the original curve. 34 | \end{minipg2}\\ 35 | \>\> {\fov stat} \> - \> Status messages\\ 36 | \>\>\>\>\> $> 0$ : warning\\ 37 | \>\>\>\>\> $= 0$ : ok\\ 38 | \>\>\>\>\> $< 0$ : error\\ 39 | EXAMPLE OF USE\\ 40 | \> \{ \\ 41 | \>\> SISLCurve \> *{\fov curve}; \, /* Must be defined */\\ 42 | \>\> double \> {\fov begpar}; \, /* Must be defined */\\ 43 | \>\> double \> {\fov endpar}; \, /* Must be defined */\\ 44 | \>\> SISLCurve \> *{\fov newcurve} = NULL;\\ 45 | \>\> int \> {\fov stat} = 0;\\ 46 | \>\> \ldots \\ 47 | \>\>s1713(\begin{minipg4} 48 | {\fov curve}, {\fov begpar}, {\fov endpar}, \&{\fov newcurve}, \&{\fov stat}); 49 | \end{minipg4}\\ 50 | \>\> \ldots \\ 51 | \> \} 52 | \end{tabbing} 53 | -------------------------------------------------------------------------------- /doc/manual/func/s1714.tex: -------------------------------------------------------------------------------- 1 | \subsection{Split a curve into two new curves.} 2 | \funclabel{s1714} 3 | \begin{minipg1} 4 | Split a curve in two parts at two specified parameter values. The 5 | first curve starts at {\fov parval1}. If the curve is open, the last 6 | part of the curve is translated so that the end of the curve joins the 7 | start. 8 | \end{minipg1} \\ 9 | SYNOPSIS\\ 10 | \>void s1714(\begin{minipg3} 11 | {\fov curve}, {\fov parval1}, {\fov parval2}, {\fov newcurve1}, {\fov newcurve2}, {\fov stat}) 12 | \end{minipg3}\\[0.3ex] 13 | \>\> SISLCurve \> *{\fov curve};\\ 14 | \>\> double \> {\fov parval1};\\ 15 | \>\> double \> {\fov parval2};\\ 16 | \>\> SISLCurve \> **{\fov newcurve1};\\ 17 | \>\> SISLCurve \> **{\fov newcurve2};\\ 18 | \>\> int \> *{\fov stat};\\ 19 | \\ 20 | ARGUMENTS\\ 21 | \>Input Arguments:\\ 22 | \>\> {\fov curve} \> - \> The curve to split.\\ 23 | \>\> {\fov parval1} \> - \> \begin{minipg2} 24 | Start parameter value of the first new curve. 25 | \end{minipg2}\\ 26 | \>\> {\fov parval2} \> - \> \begin{minipg2} 27 | Start parameter value of the second new curve. 28 | \end{minipg2}\\ 29 | \\ 30 | \>Output Arguments:\\ 31 | \>\> {\fov newcurve1}\> - \>\begin{minipg2} 32 | The first new curve. 33 | \end{minipg2}\\ 34 | \>\> {\fov newcurve2}\> - \>\begin{minipg2} 35 | The second new curve. 36 | \end{minipg2}\\ 37 | \>\> {\fov stat} \> - \> Status messages\\ 38 | \>\>\>\>\> $> 0$ : warning\\ 39 | \>\>\>\>\> $= 0$ : ok\\ 40 | \>\>\>\>\> $< 0$ : error\\ 41 | EXAMPLE OF USE\\ 42 | \> \{ \\ 43 | \>\> SISLCurve \> *{\fov curve}; \, /* Must be defined */\\ 44 | \>\> double \> {\fov parval1}; \, /* Must be defined */\\ 45 | \>\> double \> {\fov parval2}; \, /* Must be defined */\\ 46 | \>\> SISLCurve \> *{\fov newcurve1} = NULL;\\ 47 | \>\> SISLCurve \> *{\fov newcurve2} = NULL;\\ 48 | \>\> int \> stat = 0;\\ 49 | \>\> \ldots \\ 50 | \>\>s1714(\begin{minipg4} 51 | {\fov curve}, {\fov parval1}, {\fov parval2}, \&{\fov newcurve1}, \&{\fov newcurve2}, \&{\fov stat}); 52 | \end{minipg4}\\ 53 | \>\> \ldots \\ 54 | \> \} 55 | \end{tabbing} 56 | -------------------------------------------------------------------------------- /doc/manual/func/s1715.tex: -------------------------------------------------------------------------------- 1 | \subsection{Join two curves at specified ends.} 2 | \funclabel{s1715} 3 | \begin{minipg1} 4 | To join one end of one curve with one end of another curve by 5 | translating the second curve. If {\fov curve1} is to be joined at the start, 6 | the direction of the curve is turned. If {\fov curve2} is to be joined at the 7 | end, the direction of this curve is turned. This means that {\fov curve1} 8 | always makes the first part of the new curve. 9 | \end{minipg1} \\ \\ 10 | SYNOPSIS\\ 11 | \>void s1715(\begin{minipg3} 12 | {\fov curve1}, {\fov curve2}, {\fov end1}, {\fov end2}, {\fov newcurve}, {\fov stat}) 13 | \end{minipg3}\\[0.3ex] 14 | \>\> SISLCurve \> *{\fov curve1};\\ 15 | \>\> SISLCurve \> *{\fov curve2};\\ 16 | \>\> int \> {\fov end1};\\ 17 | \>\> int \> {\fov end2};\\ 18 | \>\> SISLCurve \> **{\fov newcurve};\\ 19 | \>\> int \> *{\fov stat};\\ 20 | \\ 21 | ARGUMENTS\\ 22 | \>Input Arguments:\\ 23 | \>\> {\fov curve1} \> - \> First curve to join.\\ 24 | \>\> {\fov curve2} \> - \> Second curve to join.\\ 25 | \>\> {\fov end1} \> - \> \begin{minipg2} 26 | True (1) if the first curve is to be joined at the end, 27 | else false (0). 28 | \end{minipg2}\\[0.3ex] 29 | \>\> {\fov end2} \> - \> \begin{minipg2} 30 | True (1) if the second curve is to be joined at the end, 31 | else false (0). 32 | \end{minipg2}\\[0.3ex] 33 | \\ 34 | \>Output Arguments:\\ 35 | \>\> {\fov newcurve}\> - \>\begin{minipg2} 36 | The new joined curve. 37 | \end{minipg2}\\ 38 | \>\> {\fov stat} \> - \> Status messages\\ 39 | \>\>\>\>\> $> 0$ : warning\\ 40 | \>\>\>\>\> $= 0$ : ok\\ 41 | \>\>\>\>\> $< 0$ : error\\ 42 | \newpagetabs 43 | EXAMPLE OF USE\\ 44 | \> \{ \\ 45 | \>\> SISLCurve \> *{\fov curve1}; \, /* Must be defined */\\ 46 | \>\> SISLCurve \> *{\fov curve2}; \, /* Must be defined */\\ 47 | \>\> int \> {\fov end1} = 1;\\ 48 | \>\> int \> {\fov end2} = 0;\\ 49 | \>\> SISLCurve \> *{\fov newcurve} = NULL;\\ 50 | \>\> int \> {\fov stat = 0};\\ 51 | \>\> \ldots \\ 52 | \>\>s1715(\begin{minipg4} 53 | {\fov curve1}, {\fov curve2}, {\fov end1}, {\fov end2}, \&{\fov newcurve}, \&{\fov stat}); 54 | \end{minipg4}\\ 55 | \>\> \ldots \\ 56 | \> \} 57 | \end{tabbing} 58 | -------------------------------------------------------------------------------- /doc/manual/func/s1716.tex: -------------------------------------------------------------------------------- 1 | \subsection{Join two curves at closest ends.} 2 | \funclabel{s1716} 3 | \begin{minipg1} 4 | To join two curves at the ends that lie closest to each other, if the 5 | distance between the ends is less than the tolerance {\fov epsge}. If 6 | {\fov curve1} is to be joined at the start, the direction of the curve is turned. 7 | If {\fov curve2} is to be joined at the end, the direction of this 8 | curve is turned. This means that {\fov curve1} always makes up the 9 | first part of the new curve. If {\fov epsge} is positive, but smaller 10 | than the smallest distance between the ends of the two curves, a NULL 11 | pointer is returned. 12 | \end{minipg1} \\ \\ 13 | SYNOPSIS\\ 14 | \>void s1716(\begin{minipg3} 15 | {\fov curve1}, {\fov curve2}, {\fov epsge}, {\fov newcurve}, {\fov stat}) 16 | \end{minipg3}\\[0.3ex] 17 | \>\> SISLCurve \> *{\fov curve1};\\ 18 | \>\> SISLCurve \> *{\fov curve2};\\ 19 | \>\> double \> {\fov epsge};\\ 20 | \>\> SISLCurve \> **{\fov newcurve};\\ 21 | \>\> int \> *{\fov stat};\\ 22 | \\ 23 | ARGUMENTS\\ 24 | \>Input Arguments:\\ 25 | \>\> {\fov curve1} \> - \> First curve to join.\\ 26 | \>\> {\fov curve2} \> - \> Second curve to join.\\ 27 | \>\> {\fov epsge} \> - \> \begin{minipg2} 28 | The curves are to be joined if {\fov epsge} is 29 | greater than or equal to the distance 30 | between the ends lying closest to each 31 | other. If {\fov epsge} is negative, the 32 | curves are automatically joined. 33 | \end{minipg2}\\[0.3ex] 34 | \\ 35 | \>Output Arguments:\\ 36 | \>\> {\fov newcurve}\> - \>\begin{minipg2} 37 | The new joined curve. 38 | \end{minipg2}\\ 39 | \>\> {\fov stat} \> - \> Status messages\\ 40 | \>\>\>\>\> $> 0$ : warning\\ 41 | \>\>\>\>\> $= 0$ : ok\\ 42 | \>\>\>\>\> $< 0$ : error\\ 43 | \\ %\newpagetabs 44 | EXAMPLE OF USE\\ 45 | \> \{ \\ 46 | \>\> SISLCurve \> *{\fov curve1}; \, /* Must be defined */\\ 47 | \>\> SISLCurve \> *{\fov curve2}; \, /* Must be defined */\\ 48 | \>\> double \> {\fov epsge} = 1.0e-6;\\ 49 | \>\> SISLCurve \> *{\fov newcurve} = NULL;\\ 50 | \>\> int \> {\fov stat} = 0;\\ 51 | \>\> \ldots \\ 52 | \>\>s1716(\begin{minipg4} 53 | {\fov curve1}, {\fov curve2}, {\fov epsge}, \&{\fov newcurve}, \&{\fov stat}); 54 | \end{minipg4}\\ 55 | \>\> \ldots \\ 56 | \> \} 57 | \end{tabbing} 58 | -------------------------------------------------------------------------------- /doc/manual/func/s1720.tex: -------------------------------------------------------------------------------- 1 | \subsection{Express the ``i''-th derivative of an open curve as a curve.} 2 | \funclabel{s1720} 3 | \begin{minipg1} 4 | To express the ``i''-th derivative of an open curve as a curve. 5 | \end{minipg1} \\ \\ 6 | SYNOPSIS\\ 7 | \>void s1720(\begin{minipg3} 8 | {\fov curve}, {\fov derive}, {\fov newcurve}, {\fov stat}) 9 | \end{minipg3}\\[0.3ex] 10 | \>\> SISLCurve \> *{\fov curve};\\ 11 | \>\> int \> {\fov derive};\\ 12 | \>\> SISLCurve \> **{\fov newcurve};\\ 13 | \>\> int \> *{\fov stat};\\ 14 | \\ 15 | ARGUMENTS\\ 16 | \>Input Arguments:\\ 17 | \>\> {\fov curve} \> - \> Curve to be differentiated.\\ 18 | \>\> {\fov derive} \> - \> \begin{minipg2} 19 | The order "i" of the derivative, where 20 | $0 \leq derive $. 21 | \end{minipg2}\\ 22 | \\ 23 | \>Output Arguments:\\ 24 | \>\> {\fov newcurve}\> - \>\begin{minipg2} 25 | The "i"-th derivative of a curve 26 | represented as a curve. 27 | \end{minipg2}\\[0.8ex] 28 | \>\> {\fov stat} \> - \> Status messages\\ 29 | \>\>\>\>\> $> 0$ : warning\\ 30 | \>\>\>\>\> $= 0$ : ok\\ 31 | \>\>\>\>\> $< 0$ : error\\ 32 | \\ 33 | EXAMPLE OF USE\\ 34 | \> \{ \\ 35 | \>\> SISLCurve \> *{\fov curve}; \, /* Must be defined */\\ 36 | \>\> int \> {\fov derive} = 1;\\ 37 | \>\> SISLCurve \> *{\fov newcurve} = NULL;\\ 38 | \>\> int \> {\fov stat} = 0;\\ 39 | \>\> \ldots \\ 40 | \>\>s1720(\begin{minipg4} 41 | {\fov curve}, {\fov derive}, \&{\fov newcurve}, \&{\fov stat}); 42 | \end{minipg4}\\ 43 | \>\> \ldots \\ 44 | \> \} 45 | \end{tabbing} 46 | -------------------------------------------------------------------------------- /doc/manual/func/s1730.tex: -------------------------------------------------------------------------------- 1 | \subsection{Convert a curve to a sequence of Bezier curves.} 2 | \funclabel{s1730} 3 | \begin{minipg1} 4 | To convert a curve to a sequence of Bezier curves. The Bezier 5 | curves are stored as one curve with all knots of multiplicity 6 | newcurve-$>$ik (order of the curve). 7 | If the input curve is rational, the generated Bezier curves will be 8 | rational too (i.e.\ there will be rational weights in the 9 | representation of the Bezier curves). 10 | \end{minipg1} \\ \\ 11 | SYNOPSIS\\ 12 | \>void s1730(\begin{minipg3} 13 | {\fov curve}, {\fov newcurve}, {\fov stat}) 14 | \end{minipg3}\\[0.3ex] 15 | \>\> SISLCurve \> *{\fov curve};\\ 16 | \>\> SISLCurve \> **{\fov newcurve};\\ 17 | \>\> int \> *{\fov stat};\\ 18 | \\ 19 | ARGUMENTS\\ 20 | \>Input Arguments:\\ 21 | \>\> {\fov curve} \> - \> The curve to convert.\\ 22 | \\ 23 | \>Output Arguments:\\ 24 | \>\> {\fov newcurve}\> - \>\begin{minipg2} 25 | The new curve 26 | containing all 27 | the Bezier curves. 28 | \end{minipg2}\\[0.8ex] 29 | \>\> {\fov stat} \> - \> Status messages\\ 30 | \>\>\>\>\> $> 0$ : warning\\ 31 | \>\>\>\>\> $= 0$ : ok\\ 32 | \>\>\>\>\> $< 0$ : error\\ 33 | \\ 34 | EXAMPLE OF USE\\ 35 | \> \{ \\ 36 | \>\> SISLCurve \> *{\fov curve}; \, /* Must be defined */\\ 37 | \>\> SISLCurve \> *{\fov newcurve} = NULL;\\ 38 | \>\> int \> {\fov stat} = 0;\\ 39 | \>\> \ldots \\ 40 | \>\>s1730(\begin{minipg4} 41 | {\fov curve}, \&{\fov newcurve}, \&{\fov stat}); 42 | \end{minipg4}\\ 43 | \>\> \ldots \\ 44 | \> \} 45 | \end{tabbing} 46 | -------------------------------------------------------------------------------- /doc/manual/func/s1731.tex: -------------------------------------------------------------------------------- 1 | \subsection{Convert a surface to a mesh of Bezier surfaces.} 2 | \funclabel{s1731} 3 | \begin{minipg1} 4 | To convert a surface to a mesh of Bezier surfaces. 5 | The Bezier surfaces are stored in a surface with all knots having 6 | multiplicity equal to the order of the surface in the 7 | corresponding parameter direction. 8 | If the input surface is rational, the generated Bezier surfaces will be 9 | rational too (i.e.\ there will be rational weights in the 10 | representation of the Bezier surfaces). 11 | \end{minipg1} \\ \\ 12 | SYNOPSIS\\ 13 | \>void s1731(\begin{minipg3} 14 | {\fov surf}, {\fov newsurf}, {\fov stat}) 15 | \end{minipg3}\\[0.3ex] 16 | 17 | \>\> SISLSurf \> *{\fov surf};\\ 18 | \>\> SISLSurf \> **{\fov newsurf};\\ 19 | \>\> int \> *{\fov stat};\\ 20 | \\ 21 | ARGUMENTS\\ 22 | \>Input Arguments:\\ 23 | \>\> {\fov surf}\> - \> \begin{minipg2} 24 | Surface to convert. 25 | \end{minipg2}\\ 26 | \\ 27 | \>Output Arguments:\\ 28 | \>\> {\fov newsurf}\> - \> \begin{minipg2} 29 | The new surface 30 | storing the Bezier represented\\ surfaces. 31 | \end{minipg2}\\[0.8ex] 32 | \>\> {\fov sta}t \> - \> Status messages\\ 33 | \>\>\>\>\> $> 0$ : warning\\ 34 | \>\>\>\>\> $= 0$ : ok\\ 35 | \>\>\>\>\> $< 0$ : error\\ 36 | \\ 37 | EXAMPLE OF USE\\ 38 | \> \{ \\ 39 | \>\> SISLSurf \> *{\fov surf}; \, /* Must be defined */\\ 40 | \>\> SISLSurf \> *{\fov newsurf} = NULL;\\ 41 | \>\> int \> {\fov stat} = 0;\\ 42 | \>\> \ldots \\ 43 | \>\>s1731(\begin{minipg4} 44 | {\fov surf}, \&{\fov newsurf}, \&{\fov stat}); 45 | \end{minipg4}\\ 46 | \>\> \ldots \\ 47 | \> \} 48 | \end{tabbing} 49 | -------------------------------------------------------------------------------- /doc/manual/func/s1740.tex: -------------------------------------------------------------------------------- 1 | \subsection{Draw piecewise straight lines approximating a B-spline curve.} 2 | \funclabel{s1740} 3 | \begin{minipg1} 4 | Draw piecewise straight lines approximating a B-spline curve. 5 | The distance between the B-spline curve and the 6 | straight lines is less than a tolerance epsge. NB see NOTE! 7 | \end{minipg1} \\ \\ 8 | SYNOPSIS\\ 9 | \>void s1740(\begin{minipg3} 10 | {\fov curve}, {\fov epsge}, {\fov stat}) 11 | \end{minipg3}\\[0.3ex] 12 | \>\> SISLCurve \> *{\fov curve};\\ 13 | \>\> double \> {\fov epsge};\\ 14 | \>\> int \> *{\fov stat};\\ 15 | \\ 16 | ARGUMENTS\\ 17 | \>Input Arguments:\\ 18 | \>\> {\fov curve}\> - \> \begin{minipg2} 19 | Pointer to the curve. 20 | \end{minipg2}\\ 21 | \>\> {\fov epsge}\> - \> \begin{minipg2} 22 | The maximal distance allowed between the lines 23 | drawn and the curve. 24 | \end{minipg2} \\[0.8ex] 25 | \\ 26 | \>Output Arguments:\\ 27 | \>\> {\fov stat} \> - \> Status messages\\ 28 | \>\>\>\>\> $> 0$ : warning\\ 29 | \>\>\>\>\> $= 0$ : ok\\ 30 | \>\>\>\>\> $< 0$ : error\\ 31 | \\ 32 | NOTE\\ 33 | \>\begin{minipg6} 34 | This function calls s6drawseq() which 35 | is device dependent. Before using the function you therefore have to be sure 36 | that you have a version of s6drawseq() capable for your equipment. 37 | More about s6drawseq() on page~\pageref{s6drawseq}. 38 | \end{minipg6} 39 | \\ \\ 40 | EXAMPLE OF USE\\ 41 | \> \{ \\ 42 | \>\> SISLCurve \> *{\fov curve};\\ 43 | \>\> double \> {\fov epsge};\\ 44 | \>\> int \> {\fov stat};\\ 45 | \>\> \ldots \\ 46 | \>\>s1740(\begin{minipg4} 47 | {\fov curve}, {\fov epsge}, \&{\fov stat}); 48 | \end{minipg4}\\ 49 | \>\> \ldots \\ 50 | \> \} \\ 51 | \end{tabbing} 52 | -------------------------------------------------------------------------------- /doc/manual/func/s1744.tex: -------------------------------------------------------------------------------- 1 | \subsection{Draw ``polygons'' in a surface limited by a closed B-spline 2 | curve in the parameter plane of the surface 3 | using a recursive algorithm testing for 4 | planarity of the subdivided parts.} 5 | \funclabel{s1744} 6 | \begin{minipg1} 7 | To draw a surface limited by a closed B-spline 8 | curve in the parameter plane of the surface 9 | using recursive subdivision. 10 | This drawing function is slower than the one drawing constant parameter 11 | lines, s1238() (page~\pageref{s1238}). But the recursive algorithm 12 | will guarantee that all variations in the surface greater 13 | than the surface resolution will be drawn. 14 | \end{minipg1} \\ \\ 15 | SYNOPSIS\\ 16 | \>void s1744(\begin{minipg3} 17 | {\fov surf}, {\fov curve}, {\fov epscur}, {\fov epssur}, {\fov stat}) 18 | \end{minipg3}\\[0.3ex] 19 | \>\> SISLSurf \> *{\fov surf};\\ 20 | \>\> SISLCurve \> *{\fov curve};\\ 21 | \>\> double \> {\fov epscur};\\ 22 | \>\> double \> {\fov epssur};\\ 23 | \>\> int \> *{\fov stat};\\ 24 | \\ 25 | ARGUMENTS\\ 26 | 27 | \>Input Arguments:\\ 28 | \>\> {\fov surf}\> - \> \begin{minipg2} 29 | The B-spline surface to be drawn. 30 | \end{minipg2}\\ 31 | \>\> {\fov curve}\> - \> \begin{minipg2} 32 | SISLCurve limiting the part of the surface that is to be drawn 33 | \end{minipg2}\\[0.8ex] 34 | \>\> {\fov epscur}\> - \> \begin{minipg2} 35 | Geometry resolution for curve. 36 | The maximal distance allowed between 37 | the curves 38 | drawn and the surface. 39 | \end{minipg2}\\[0.8ex] 40 | \>\> {\fov epssur}\> - \> \begin{minipg2} 41 | Geometry resolution for surface. 42 | \end{minipg2}\\ 43 | \\ 44 | \>Output Arguments:\\ 45 | \>\> {\fov stat} \> - \> Status messages\\ 46 | \>\>\>\>\> $> 0$ : warning\\ 47 | \>\>\>\>\> $= 0$ : ok\\ 48 | \>\>\>\>\> $< 0$ : error\\ 49 | \\ 50 | NOTE\\ 51 | \>\begin{minipg6} 52 | This function calls s6drawseq() which 53 | is device dependent. Before using the function make sure 54 | to have a version of s6drawseq() 55 | interfaced to your graphic package. 56 | More about s6drawseq() on page~\pageref{s6drawseq}. 57 | \end{minipg6} 58 | \\ \\ 59 | EXAMPLE OF USE\\ 60 | \> \{ \\ 61 | \>\> SISLSurf \> *{\fov surf};\\ 62 | \>\> SISLCurve \> *{\fov curve};\\ 63 | \>\> double \> {\fov epscur};\\ 64 | \>\> double \> {\fov epssur};\\ 65 | \>\> int \> {\fov stat};\\ 66 | \>\> \ldots \\ 67 | \>\>s1744(\begin{minipg4} 68 | {\fov surf}, {\fov curve}, {\fov epscur}, {\fov epssur}, \&{\fov stat}); 69 | \end{minipg4}\\ 70 | \>\> \ldots \\ 71 | \> \} 72 | \end{tabbing} 73 | -------------------------------------------------------------------------------- /doc/manual/func/s1745.tex: -------------------------------------------------------------------------------- 1 | \subsection{Shade a surface.} 2 | \funclabel{s1745} 3 | \begin{minipg1} 4 | To shade a surface 5 | using a recursive algorithm testing for 6 | planarity of the subdivided parts. 7 | \end{minipg1} \\ \\ 8 | SYNOPSIS\\ 9 | \>void s1745(\begin{minipg3} 10 | {\fov surf}, {\fov epsge}, {\fov stat}) 11 | \end{minipg3}\\[0.3ex] 12 | \>\> SISLSurf \> *{\fov surf};\\ 13 | \>\> double \> {\fov epsge};\\ 14 | \>\> int \> *{\fov stat};\\ 15 | \\ 16 | ARGUMENTS\\ 17 | \>Input Arguments:\\ 18 | \>\> {\fov surf}\> - \> \begin{minipg2} 19 | The B-spline surface to be drawn. 20 | \end{minipg2}\\ 21 | \>\> {\fov epsge}\> - \> \begin{minipg2} 22 | Geometry resolution for surface. 23 | \end{minipg2}\\ 24 | \\ 25 | \>Output Arguments:\\ 26 | \>\> {\fov stat} \> - \> Status messages\\ 27 | \>\>\>\>\> $> 0$ : warning\\ 28 | \>\>\>\>\> $= 0$ : ok\\ 29 | \>\>\>\>\> $< 0$ : error\\ 30 | \\ 31 | NOTE\\ 32 | \>\begin{minipg6} 33 | This function calls s6shadepol() which 34 | is device dependent. Before using the function make sure 35 | to have a version of s6shadepol() 36 | interfaced to your graphic package. 37 | More about s6shadepol() on page~\pageref{s6shadepol}. 38 | \end{minipg6} 39 | \\ \\ 40 | EXAMPLE OF USE\\ 41 | \> \{ \\ 42 | \>\> SISLSurf \> *{\fov surf};\\ 43 | \>\> double \> {\fov epsge};\\ 44 | \>\> int \> {\fov stat};\\ 45 | \>\> \ldots \\ 46 | \>\>s1745(\begin{minipg4} 47 | {\fov surf}, {\fov epsge}, \&{\fov stat}); 48 | \end{minipg4}\\ 49 | \>\> \ldots \\ 50 | \> \} 51 | \end{tabbing} 52 | -------------------------------------------------------------------------------- /doc/manual/func/s1746.tex: -------------------------------------------------------------------------------- 1 | \subsection{Shade a surface limited by a closed B-spline 2 | curve in the parameter plane of the surface.} 3 | \funclabel{s1746} 4 | \begin{minipg1} 5 | To shade a surface 6 | limited by a closed B-spline 7 | curve in the parameter plane of the surface, using a recursive algorithm testing for 8 | planarity of the subdivided parts 9 | \end{minipg1} \\ \\ 10 | SYNOPSIS\\ 11 | \>void s1746(\begin{minipg3} 12 | {\fov surf}, {\fov curve}, {\fov epsge}, {\fov stat}) 13 | \end{minipg3}\\[0.3ex] 14 | \>\> SISLSurf \> *{\fov surf};\\ 15 | \>\> SISLCurve \> *{\fov curve};\\ 16 | \>\> double \> {\fov epsge};\\ 17 | \>\> int \> *{\fov stat};\\ 18 | \\ 19 | ARGUMENTS\\ 20 | \>Input Arguments:\\ 21 | \>\> {\fov surf}\> - \> \begin{minipg2} 22 | The B-spline surface to be drawn. 23 | \end{minipg2}\\ 24 | \>\> {\fov curve}\> - \> \begin{minipg2} 25 | SISLCurve limiting the part of the surface that is to be drawn 26 | \end{minipg2}\\[0.8ex] 27 | \>\> {\fov epsge}\> - \> \begin{minipg2} 28 | Geometry resolution for surface. 29 | \end{minipg2}\\ 30 | \\ 31 | \>Output Arguments:\\ 32 | \>\> {\fov stat} \> - \> Status messages\\ 33 | \>\>\>\>\> $> 0$ : warning\\ 34 | \>\>\>\>\> $= 0$ : ok\\ 35 | \>\>\>\>\> $< 0$ : error\\ 36 | \\ 37 | NOTE\\ 38 | \>\begin{minipg6} 39 | This function calls s6shadepol() which 40 | is device dependent. Before using the function make sure 41 | to have a version of s6shadepol() 42 | interfaced to your graphic package. 43 | More about s6shadepol() on page~\pageref{s6shadepol}. 44 | \end{minipg6} 45 | \\ \\ 46 | EXAMPLE OF USE\\ 47 | \> \{ \\ 48 | \>\> SISLSurf \> *{\fov surf};\\ 49 | \>\> SISLCurve \> *{\fov curve};\\ 50 | \>\> double \> {\fov epsge};\\ 51 | \>\> int \> {\fov stat};\\ 52 | \>\> \ldots \\ 53 | \>\>s1746(\begin{minipg4} 54 | {\fov surf}, {\fov curve}, {\fov epsge}, \&{\fov stat}); 55 | \end{minipg4}\\ 56 | \>\> \ldots \\ 57 | \> \} 58 | \end{tabbing} 59 | -------------------------------------------------------------------------------- /doc/manual/func/s1750.tex: -------------------------------------------------------------------------------- 1 | \subsection{Express a curve using a higher order basis.} 2 | \funclabel{s1750} 3 | \begin{minipg1} 4 | To describe a curve using a higher order basis. 5 | \end{minipg1} \\ \\ 6 | SYNOPSIS\\ 7 | \>void s1750(\begin{minipg3} 8 | {\fov curve}, {\fov order}, {\fov newcurve}, {\fov stat}) 9 | \end{minipg3}\\[0.3ex] 10 | \>\> SISLCurve \> *{\fov curve};\\ 11 | \>\> int \> {\fov order};\\ 12 | \>\> SISLCurve \> **{\fov newcurve};\\ 13 | \>\> int \> *{\fov stat};\\ 14 | \\ 15 | ARGUMENTS\\ 16 | \>Input Arguments:\\ 17 | \>\> {\fov curve} \> - \> The input curve.\\ 18 | \>\> {\fov order} \> - \> \begin{minipg2} 19 | Order of the new curve. 20 | \end{minipg2}\\ 21 | \\ 22 | \>Output Arguments:\\ 23 | \>\> {\fov newcurve}\> - \>\begin{minipg2} 24 | The new curve of higher order. 25 | \end{minipg2}\\ 26 | \>\> {\fov stat} \> - \> Status messages\\ 27 | \>\>\>\>\> $> 0$ : warning\\ 28 | \>\>\>\>\> $= 0$ : ok\\ 29 | \>\>\>\>\> $< 0$ : error\\ 30 | \\ 31 | EXAMPLE OF USE\\ 32 | \> \{ \\ 33 | \>\> SISLCurve \> *{\fov curve}; \,/* Must be defined */\\ 34 | \>\> double \> {\fov order}; \, /* Must be defined */\\ 35 | \>\> SISLCurve \> *{\fov newcurve} = NULL;\\ 36 | \>\> int \> stat = 0;\\ 37 | \>\> \ldots \\ 38 | \>\>s1750(\begin{minipg4} 39 | {\fov curve}, {\fov order}, \&{\fov newcurve}, \&{\fov stat}); 40 | \end{minipg4}\\ 41 | \>\> \ldots \\ 42 | \> \} 43 | \end{tabbing} 44 | -------------------------------------------------------------------------------- /doc/manual/func/s1957.tex: -------------------------------------------------------------------------------- 1 | \subsection{Find the closest point between a curve and a point. Simple version.} 2 | \funclabel{s1957} 3 | \begin{minipg1} 4 | Find the closest point between a curve and a point. 5 | The method is fast and should work well in clear cut cases but does not 6 | guarantee finding the right solution. As long as it doesn't fail, it 7 | will find exactly one point. In other cases, use s1953(). 8 | \end{minipg1}\\ \\ 9 | SYNOPSIS\\ 10 | \>void s1957(\begin{minipg3} 11 | {\fov pcurve}, {\fov epoint}, {\fov idim}, {\fov aepsco}, {\fov aepsge}, {\fov gpar}, {\fov dist}, {\fov jstat}) 12 | \end{minipg3}\\[0.3ex] 13 | \>\> SISLCurve \> *{\fov pcurve};\\ 14 | \>\> double \> {\fov epoint}[\,];\\ 15 | \>\> int \> {\fov idim};\\ 16 | \>\> double \> {\fov aepsco};\\ 17 | \>\> double \> {\fov aepsge};\\ 18 | \>\> double \> *{\fov gpar};\\ 19 | \>\> double \> *{\fov dist};\\ 20 | \>\> int \> *{\fov jstat};\\ 21 | \\ 22 | ARGUMENTS\\ 23 | \>Input Arguments:\\ 24 | \>\> {\fov pcurve} \> - \> 25 | \begin{minipg2} 26 | Pointer to the curve in the closest point problem. 27 | \end{minipg2}\\[0.8ex] 28 | \>\> {\fov epoint} \> - \> The point in the closest point problem.\\ 29 | \>\> {\fov idim} \> - \> Dimension of the space in which 30 | {\fov epoint} lies.\\ 31 | \>\> {\fov aepsco} \> - \> Computational resolution (not used).\\ 32 | \>\> {\fov aepsge} \> - \> Geometry resolution.\\ 33 | \\ 34 | \>Output Arguments:\\ 35 | \>\> {\fov gpar} \> - \> 36 | \begin{minipg2} 37 | The parameter value of the closest point in the parameter 38 | interval of the curve. 39 | \end{minipg2}\\[0.8ex] 40 | \>\> {\fov dist} \> - \> The closest distance between curve and point.\\ 41 | \>\> {\fov jstat} \> - \> Status message\\ 42 | \>\>\>\>\> $< 0$ : Error.\\ 43 | \>\>\>\>\> $= 0$ : Point found by iteration.\\ 44 | \>\>\>\>\> $> 0$ : Warning.\\ 45 | \>\>\>\>\> $= 1$ : Point lies at an end.\\ 46 | \newpagetabs 47 | EXAMPLE OF USE\\ 48 | \> \{ \\ 49 | \>\> SISLCurve \> *{\fov pcurve}; \, /* Must be defined */\\ 50 | \>\> double \> {\fov epoint}[3]; \, /* Must be defined */\\ 51 | \>\> int \> {\fov idim} = 3;\\ 52 | \>\> double \> {\fov aepsco} = 1.0e-9; /* Not used */\\ 53 | \>\> double \> {\fov aepsge} = 1.0e-6;\\ 54 | \>\> double \> {\fov gpar} = 0;\\ 55 | \>\> double \> {\fov dist} = 0;\\ 56 | \>\> int \> {\fov jstat} = 0;\\ 57 | \>\> \ldots \\ 58 | \>\>s1957(\begin{minipg4} 59 | {\fov pcurve}, {\fov epoint}, {\fov idim}, {\fov aepsco}, {\fov aepsge}, \&{\fov gpar}, \&{\fov dist}, \&{\fov jstat}); 60 | \end{minipg4}\\ 61 | \>\> \ldots \\ 62 | \> \} 63 | \end{tabbing} 64 | -------------------------------------------------------------------------------- /doc/manual/func/s1986.tex: -------------------------------------------------------------------------------- 1 | \subsection{Find the direction cone of a curve.} 2 | \funclabel{s1986} 3 | \begin{minipg1} 4 | Find the direction cone of a curve. 5 | \end{minipg1} \\ \\ 6 | SYNOPSIS\\ 7 | \>void s1986(\begin{minipg3} 8 | {\fov pc}, {\fov aepsge}, {\fov jgtpi}, {\fov gaxis}, {\fov cang}, {\fov jstat}) 9 | \end{minipg3}\\[0.3ex] 10 | \>\> SISLCurve \> *{\fov pc};\\ 11 | \>\> double \> {\fov aepsge};\\ 12 | \>\> int \> *{\fov jgtpi};\\ 13 | \>\> double \> **{\fov gaxis};\\ 14 | \>\> double \> *{\fov cang};\\ 15 | \>\> int \> *{\fov jstat};\\ 16 | \\ 17 | ARGUMENTS\\ 18 | \>Input Arguments:\\ 19 | \>\> {\fov pc} \> - \> The curve to treat.\\ 20 | \>\> {\fov aepsge} \> - \> Geometry tolerance.\\ 21 | \\ 22 | \>Output Arguments:\\ 23 | \>\> {\fov jgtpi} \> - \> 24 | \begin{minipg2} 25 | To mark if the angle of the direction cone is greater than $\pi$. 26 | \end{minipg2}\\[0.3ex] 27 | \>\>\>\>\> $= 0$ \begin{minipg5} 28 | The direction cone of the curve $\leq\pi$. 29 | \end{minipg5}\\[0.3ex] 30 | \>\>\>\>\> $= 1$ \begin{minipg5} 31 | The direction cone of the curve $> \pi$. 32 | \end{minipg5}\\[0.8ex] 33 | \>\> {\fov gaxis} \> - \> 34 | \begin{minipg2} 35 | Allocated array containing the coordinates of the 36 | centre of the cone. It is only computed if $jgtpi=0$. 37 | \end{minipg2}\\[0.8ex] 38 | \>\> {\fov cang} \> - \> 39 | \begin{minipg2} 40 | The angle from the centre to the boundary of the 41 | cone. It is only computed if $jgtpi=0$. 42 | \end{minipg2}\\[0.8ex] 43 | \>\> {\fov jstat} \> - \> Status messages\\ 44 | \>\>\>\>\> $> 0$ : Warning.\\ 45 | \>\>\>\>\> $= 0$ : Ok.\\ 46 | \>\>\>\>\> $< 0$ : Error.\\ 47 | \\ 48 | EXAMPLE OF USE\\ 49 | \> \{ \\ 50 | \>\> SISLCurve \> *{\fov pc}; \, /* Must be defined */\\ 51 | \>\> double \> {\fov aepsge} = 1.0e-10;\\ 52 | \>\> int \> {\fov jgtpi} = 0;\\ 53 | \>\> double \> *{\fov gaxis} = NULL;\\ 54 | \>\> double \> {\fov cang} = 0.0;\\ 55 | \>\> int \> {\fov jstat} = 0;\\ 56 | \>\> \ldots \\ 57 | \>\>s1986(\begin{minipg4} 58 | {\fov pc}, {\fov aepsge}, \&{\fov jgtpi}, \&{\fov gaxis}, \&{\fov cang}, \&{\fov jstat}); 59 | \end{minipg4}\\ 60 | \>\> \ldots \\ 61 | \> \} 62 | \end{tabbing} 63 | -------------------------------------------------------------------------------- /doc/manual/func/s1988.tex: -------------------------------------------------------------------------------- 1 | \subsection{Find the bounding box of a curve.} 2 | \funclabel{s1988} 3 | \begin{minipg1} 4 | Find the bounding box of a SISLCurve. NB. The geometric 5 | bounding box is returned also in the rational case, that 6 | is the box in homogenous coordinates is NOT computed. 7 | \end{minipg1} \\ \\ 8 | SYNOPSIS\\ 9 | \> void s1988(\begin{minipg3} 10 | {\fov pc}, {\fov emax}, {\fov emin}, {\fov jstat}) 11 | \end{minipg3}\\[0.3ex] 12 | \>\> SISLCurve \> *{\fov pc};\\ 13 | \>\> double \> **{\fov emax};\\ 14 | \>\> double \> **{\fov emin};\\ 15 | \>\> int \> *{\fov jstat};\\ 16 | \\ 17 | ARGUMENTS\\ 18 | \>Input Arguments:\\ 19 | \>\> {\fov pc} \> - \> The curve to treat.\\ 20 | \\ 21 | \>Output Arguments:\\ 22 | \>\> {\fov emin} \> - \> 23 | \begin{minipg2} 24 | Array of dimension {\fov idim} containing 25 | the minimum values of the bounding box, 26 | i.e.\ bottom-left corner of the box. 27 | \end{minipg2}\\[0.8ex] 28 | \>\> {\fov emax} \> - \> 29 | \begin{minipg2} 30 | Array of dimension {\fov idim} containing 31 | the maximum values of the bounding box, 32 | i.e.\ upper-right corner of the box. 33 | \end{minipg2}\\[0.8ex] 34 | \>\> {\fov jstat} \> - \> Status message\\ 35 | \>\>\>\>\> $< 0$ : Error.\\ 36 | \>\>\>\>\> $= 0$ : Ok.\\ 37 | \>\>\>\>\> $> 0$ : Warning.\\ 38 | \\ 39 | EXAMPLE OF USE\\ 40 | \> \{ \\ 41 | \>\> SISLCurve \> *{\fov pc}; \, /* Must be defined */\\ 42 | \>\> double \> *{\fov emax} = NULL;\\ 43 | \>\> double \> *{\fov emin} = NULL;\\ 44 | \>\> int \> {\fov jstat} = 0;\\ 45 | \>\> \ldots \\ 46 | \>\>s1988(\begin{minipg4} 47 | {\fov pc}, \&{\fov emax}, \&{\fov emin}, \&{\fov jstat}); 48 | \end{minipg4}\\ 49 | \>\> \ldots \\ 50 | \> \} 51 | \end{tabbing} 52 | -------------------------------------------------------------------------------- /doc/manual/func/s1989.tex: -------------------------------------------------------------------------------- 1 | \subsection{Find the bounding box of a surface.} 2 | \funclabel{s1989} 3 | \begin{minipg1} 4 | Find the bounding box of a surface.\\ 5 | NOTE: The geometric 6 | bounding box is returned also in the rational case, that 7 | is the box in homogeneous coordinates is NOT computed. 8 | \end{minipg1} \\ \\ 9 | SYNOPSIS\\ 10 | \>void s1989(\begin{minipg3} 11 | {\fov ps}, {\fov emax}, {\fov emin}, {\fov jstat}) 12 | \end{minipg3}\\[0.3ex] 13 | \>\> SISLSurf \> *{\fov ps};\\ 14 | \>\> double \> **{\fov emax};\\ 15 | \>\> double \> **{\fov emin};\\ 16 | \>\> int \> *{\fov jstat};\\ 17 | \\ 18 | ARGUMENTS\\ 19 | \>Input Arguments:\\ 20 | \>\> {\fov ps}\> - \> \begin{minipg2} 21 | Surface to treat. 22 | \end{minipg2}\\ 23 | \\ 24 | \>Output Arguments:\\ 25 | \>\> {\fov emin}\> - \> \begin{minipg2} 26 | Array of dimension {\fov idim} containing 27 | the minimum values of the bounding box, 28 | i.e.\ bottom-left corner of the box. 29 | \end{minipg2}\\[0.8ex] 30 | \>\> {\fov emax}\> - \> \begin{minipg2} 31 | Array of dimension {\fov idim} containing 32 | the maximum values of the bounding box, 33 | i.e.\ upper-right corner of the box. 34 | \end{minipg2}\\[0.8ex] 35 | \>\> {\fov jstat} \> - \> Status messages\\ 36 | \>\>\>\> $> 0$ \> : Warning.\\ 37 | \>\>\>\> $= 0$ \> : Ok.\\ 38 | \>\>\>\> $< 0$ \> : Error.\\ 39 | \\ 40 | EXAMPLE OF USE\\ 41 | \> \{ \\ 42 | \>\> SISLSurf \> *{\fov ps}; \, /* Must be defined */\\ 43 | \>\> double \> *{\fov emax} = NULL;\\ 44 | \>\> double \> *{\fov emin} = NULL;\\ 45 | \>\> int \> {\fov jstat} = 0;\\ 46 | \>\> \ldots \\ 47 | \>\>s1989(\begin{minipg4} 48 | {\fov ps}, \&{\fov emax}, \&{\fov emin}, \&{\fov jstat}); 49 | \end{minipg4}\\ 50 | \>\> \ldots \\ 51 | \> \} 52 | \end{tabbing} 53 | -------------------------------------------------------------------------------- /doc/manual/func/s1990.tex: -------------------------------------------------------------------------------- 1 | \subsection{Create and compute normal cone of a surface.} 2 | \funclabel{s1990} 3 | \begin{minipg1} 4 | To create the normal cone on the unit sphere to 5 | a NURBS surface, the surface is represented with 6 | a surrounding cone picked from the unit sphere. The cone centre and cone angle are placed in the SISLdir element pointed to by pdir in the surface object. 7 | \end{minipg1} \\ \\ 8 | SYNOPSIS\\ 9 | \>void s1990(\begin{minipg3} 10 | surf, epsge, stat) 11 | \end{minipg3}\\[0.3ex] 12 | \>\> SISLSurf \> *{\fov surf};\\ 13 | \>\> double \> {\fov epsge};\\ 14 | \>\> int \> *{\fov stat};\\ 15 | \\ 16 | ARGUMENTS\\ 17 | \>Input Arguments:\\ 18 | \>\> {\fov surf} \> - \> Input surface.\\ 19 | \>\> {\fov epsge} \> - \> Geometry resolution.\\ 20 | \\ 21 | \>Output Arguments:\\ 22 | \>\> {\fov stat} \> - \> Status messages\\ 23 | \>\>\>\>\> $> 0$ : warning\\ 24 | \>\>\>\>\> $= 0$ : ok\\ 25 | \>\>\>\>\> $< 0$ : error\\ 26 | \\ 27 | EXAMPLE OF USE\\ 28 | \> \{ \\ 29 | \>\> SISLSurf \> *{\fov surf} = NULL;\\ 30 | \>\> int \> {\fov number1} = 5;\\ 31 | \>\> int \> {\fov number2} = 4;\\ 32 | \>\> int \> {\fov order1} = 4;\\ 33 | \>\> int \> {\fov order2} = 3;\\ 34 | \>\> double \> {\fov knot1[9]};\\ 35 | \>\> double \> {\fov knot2[7]};\\ 36 | \>\> double \> {\fov coef[60]};\\ 37 | \>\> double \> {\fov epsge} = 1e-10;\\ 38 | \>\> int \> {\fov kind} = 1;\\ 39 | \>\> int \> {\fov dim} = 3;\\ 40 | \>\> int \> {\fov copy} = 0;\\ 41 | \>\> int \> {\fov stat};\\ 42 | \>\> \ldots \\ 43 | \>\>surf$=$newSurf(\begin{minipg4} 44 | {\fov number1}, {\fov number2}, {\fov order1}, {\fov order2}, {\fov knot1}, {\fov knot2}, {\fov coef}, {\fov kind}, {\fov dim}, {\fov copy}); 45 | \end{minipg4}\\ 46 | \>\> \ldots \\ 47 | \>\>s1990(\begin{minipg4} 48 | {\fov surf}, {\fov epsge}, \&{\fov stat}); 49 | \end{minipg4}\\ 50 | \>\> \ldots \\ 51 | \> \} 52 | \end{tabbing} 53 | -------------------------------------------------------------------------------- /doc/manual/func/s1991.tex: -------------------------------------------------------------------------------- 1 | \subsection{Create and compute direction cone to a curve.} 2 | \funclabel{s1991} 3 | \begin{minipg1} 4 | To make the orientation cone on the unit sphere of 5 | a NURBS curve. The curve is represented with 6 | a surrounding cone picked from the unit sphere. The cone centre and cone angle are placed in the SISLdir element pointed to by pdir in the curve object. 7 | \end{minipg1} \\ \\ 8 | SYNOPSIS\\ 9 | \>void s1991(\begin{minipg3} 10 | {\fov curve}, {\fov epsge}, {\fov stat}) 11 | \end{minipg3}\\[0.3ex] 12 | \>\> SISLCurve \> *{\fov curve};\\ 13 | \>\> double \> {\fov epsge};\\ 14 | \>\> int \> *{\fov stat};\\ 15 | \\ 16 | ARGUMENTS\\ 17 | \>Input Arguments:\\ 18 | \>\> {\fov curve} \> - \> Input curve.\\ 19 | \>\> {\fov epsge} \> - \> Geometry resolution.\\ 20 | \>Output Arguments:\\ 21 | \>\> {\fov stat} \> - \> Status messages\\ 22 | \>\>\>\>\> $> 0$ : warning\\ 23 | \>\>\>\>\> $= 0$ : ok\\ 24 | \>\>\>\>\> $< 0$ : error\\ 25 | EXAMPLE OF USE\\ 26 | \> \{ \\ 27 | \>\> SISLCurve \> *{\fov curve} = NULL;\\ 28 | \>\> int \> {\fov number} = 10;\\ 29 | \>\> int \> {\fov order} = 4;\\ 30 | \>\> double \> {\fov knots[14]};\\ 31 | \>\> double \> {\fov coef[30]};\\ 32 | \>\> double \> {\fov epsge} = 1e-10;\\ 33 | \>\> int \> {\fov kind} = 1;\\ 34 | \>\> int \> {\fov dim} = 3;\\ 35 | \>\> int \> {\fov copy} = 0;\\ 36 | \>\> int \> {\fov stat};\\ 37 | \>\> \ldots \\ 38 | \>\>{\fov curve}$=$newCurve(\begin{minipg4} 39 | {\fov number}, {\fov order}, {\fov knots}, {\fov coef}, {\fov kind}, {\fov dim}, {\fov copy}); 40 | \end{minipg4}\\ 41 | \>\> \ldots \\ 42 | \>\>s1991(\begin{minipg4} 43 | {\fov curve}, {\fov epsge}, \&{\fov stat}); 44 | \end{minipg4}\\ 45 | \>\> \ldots \\ 46 | \> \} 47 | \end{tabbing} 48 | -------------------------------------------------------------------------------- /doc/manual/func/s1992cu.tex: -------------------------------------------------------------------------------- 1 | \subsection{Create and compute bounding box to a curve.} 2 | \funclabel{s1992cu} 3 | \begin{minipg7} 4 | Make a box from the control polygon to the curve given by 5 | ecoef. If dimension is 2, then one box rotated 45 degrees is also made. If the dimension 6 | is 3, then boxes rotated 45 degrees around each 7 | main axis are made. The min/max values of the boxes are placed in the SISLbox element pointed to by pbox in the curve object. 8 | \end{minipg7} \\ \\ 9 | SYNOPSIS\\ 10 | \>void s1992cu(\begin{minipg3} 11 | {\fov curve}, {\fov stat}) 12 | \end{minipg3}\\[0.3ex] 13 | \>\> SISLCurve \> *{\fov curve};\\ 14 | \>\> int \> *{\fov stat};\\ 15 | \newpagetabs 16 | ARGUMENTS\\ 17 | \>Input Arguments:\\ 18 | \>\> {\fov curve} \> - \> Input curve.\\ 19 | \\ 20 | \>Output Arguments:\\ 21 | \>\> {\fov stat} \> - \> Status messages\\ 22 | \>\>\>\>\> $> 0$ : warning\\ 23 | \>\>\>\>\> $= 0$ : ok\\ 24 | \>\>\>\>\> $< 0$ : error\\ 25 | \\ 26 | EXAMPLE OF USE\\ 27 | \> \{ \\ 28 | \>\> SISLCurve \> *{\fov curve = NULL};\\ 29 | \>\> int \> {\fov number} = 10;\\ 30 | \>\> int \> {\fov order} = 4;\\ 31 | \>\> double \> {\fov knots[14]};\\ 32 | \>\> double \> {\fov coef[30]};\\ 33 | \>\> int \> {\fov kind} = 1;\\ 34 | \>\> int \> {\fov dim} = 3;\\ 35 | \>\> int \> {\fov copy} = 0;\\ 36 | \>\> int \> {\fov stat};\\ 37 | \>\> \ldots \\ 38 | \>\>curve$=$newCurve(\begin{minipg4} 39 | {\fov number}, {\fov order}, {\fov knots}, {\fov coef}, {\fov kind}, {\fov dim}, {\fov copy}); 40 | \end{minipg4}\\ 41 | \>\> \ldots \\ 42 | \>\>s1992cu(\begin{minipg4} 43 | {\fov curve}, \&{\fov stat}); 44 | \end{minipg4}\\ 45 | \>\> \ldots \\ 46 | \> \} 47 | \end{tabbing} 48 | -------------------------------------------------------------------------------- /doc/manual/func/s1992su.tex: -------------------------------------------------------------------------------- 1 | \subsection{Create and compute bounding box to a surface.} 2 | \funclabel{s1992su} 3 | \begin{minipg7} 4 | Make a box from the control polygon of the surface given by 5 | ecoef. If dimension is 2 then one 6 | box rotated 45 degrees is also made. If dimension 7 | is 3 then boxes rotated 45 degrees around each 8 | main axis are made. The min/max values of the boxes are placed in the SISLbox element pointed to by pbox in the surface object. 9 | \end{minipg7} \\ \\ 10 | SYNOPSIS\\ 11 | \>void s1992su(\begin{minipg3} 12 | {\fov surf}, {\fov stat}) 13 | \end{minipg3}\\[0.3ex] 14 | \>\> SISLSurf \> *{\fov surf};\\ 15 | \>\> int \> *{\fov stat};\\ 16 | \newpagetabs 17 | ARGUMENTS\\ 18 | \>Input Arguments:\\ 19 | \>\> {\fov surf} \> - \> Input surface.\\ 20 | \\ 21 | \>Output Arguments:\\ 22 | \>\> {\fov stat} \> - \> Status messages\\ 23 | \>\>\>\>\> $> 0$ : warning\\ 24 | \>\>\>\>\> $= 0$ : ok\\ 25 | \>\>\>\>\> $< 0$ : error\\ 26 | \\ 27 | EXAMPLE OF USE\\ 28 | \> \{ \\ 29 | \>\> SISLSurf \> *{\fov surf} = NULL;\\ 30 | \>\> int \> {\fov number}1=5;\\ 31 | \>\> int \> {\fov number}2=4;\\ 32 | \>\> int \> {\fov order}1=4;\\ 33 | \>\> int \> {\fov order}2=3;\\ 34 | \>\> double \> {\fov knot1[9]};\\ 35 | \>\> double \> {\fov knot2[7]};\\ 36 | \>\> double \> {\fov coef[60]};\\ 37 | \>\> int \> {\fov kind} = 1;\\ 38 | \>\> int \> {\fov dim} = 3;\\ 39 | \>\> int \> {\fov copy} = 0;\\ 40 | \>\> int \> {\fov stat};\\ 41 | \>\> \ldots \\ 42 | \>\>surf$=$newSurf(\begin{minipg4} 43 | {\fov number1}, {\fov number2}, {\fov order1}, {\fov order2}, {\fov knot1}, {\fov knot2},\\ {\fov coef}, {\fov kind}, {\fov dim}, {\fov copy}); 44 | \end{minipg4}\\ 45 | \>\> \ldots \\ 46 | \>\>s1992su(\begin{minipg4} 47 | {\fov surf}, \&{\fov stat}); 48 | \end{minipg4}\\ 49 | \>\> \ldots \\ 50 | \> \} 51 | \end{tabbing} 52 | -------------------------------------------------------------------------------- /doc/manual/func/s2550.tex: -------------------------------------------------------------------------------- 1 | \subsection{Evaluate the curvature of a curve at given parameter values.} 2 | \funclabel{s2550} 3 | \begin{minipg1} 4 | Evaluate the curvature of a curve at given parameter values 5 | ax[ 0 ],...,ax[ num\_ax - 1 ]. 6 | \end{minipg1} \\ \\ 7 | SYNOPSIS\\ 8 | \> void s2550(\begin{minipg3} 9 | {\fov curve}, {\fov ax}, num\_ {\fov ax}, {\fov curvature}, jstat ) 10 | \end{minipg3}\\ 11 | \>\> SISLCurve \> *{\fov curve};\\ 12 | \>\> double \> {\fov ax}[\,];\\ 13 | \>\> int \> {\fov num}\_ax;\\ 14 | \>\> double \> {\fov curvature}[\,];\\ 15 | \>\> int \> *{\fov jstat};\\ 16 | \\ 17 | ARGUMENTS\\ 18 | \>Input Arguments:\\ 19 | \>\> {\fov curve}\> - \> \begin{minipg2} 20 | Pointer to the curve. 21 | \end{minipg2}\\ 22 | \>\> {\fov ax}\> - \> \begin{minipg2} 23 | The parameter values 24 | \end{minipg2}\\ 25 | \>\> {\fov num}\> - \> \begin{minipg2} 26 | No. of parameter values 27 | \end{minipg2}\\ 28 | \\ 29 | \>Output Arguments:\\ 30 | \>\> {\fov }\> - \> \begin{minipg2} 31 | 32 | \end{minipg2}\\ 33 | \>\> {\fov curvature}\> - \> \begin{minipg2} 34 | The "num\_ax" curvature values computed 35 | \end{minipg2}\\ 36 | 37 | \>\> {\fov jstat} \> - \> Status messages\\ 38 | \>\>\>\>\> $> 0$ : Warning.\\ 39 | \>\>\>\>\> $= 0$ : Ok.\\ 40 | \>\>\>\>\> $< 0$ : Error.\\ 41 | \\ 42 | EXAMPLE OF USE\\ 43 | \> \{ \\ 44 | 45 | \>\> SISLCurve \> *{\fov curve}; \, /* Must be defined */\\ 46 | \>\> double \> {\fov ax}[10]; \, /* Must be defined */\\ 47 | \>\> int \> {\fov num}\_ax = 10;\\ 48 | \>\> double \> {\fov curvature}[10]; /* Size equal to num\_ax */\\ 49 | \>\> int \> {\fov jstat} = 0;\\ \>\> \ldots \\ 50 | \>\>s2550(\begin{minipg4} 51 | {\fov curve}, {\fov ax}, num\_ {\fov ax}, {\fov curvature}, \&jstat ); 52 | \end{minipg4}\\ 53 | \>\> \ldots \\ 54 | \> \} 55 | \end{tabbing} 56 | -------------------------------------------------------------------------------- /doc/manual/func/s2553.tex: -------------------------------------------------------------------------------- 1 | \subsection{Evaluate the torsion of a curve at given parameter values.} 2 | \funclabel{s2553} 3 | \begin{minipg1} 4 | Evaluate the torsion of a curve at given parameter values 5 | ax[ 0 ],...,ax[ num\_ax - 1 ]. 6 | \end{minipg1} \\ \\ 7 | SYNOPSIS\\ 8 | \> void s2553(\begin{minipg3} 9 | {\fov curve}, {\fov ax}, num\_ {\fov ax}, {\fov torsion}, jstat ) 10 | \end{minipg3}\\ 11 | \>\> SISLCurve \> *{\fov curve};\\ 12 | \>\> double \> {\fov ax}[\,];\\ 13 | \>\> int \> {\fov num}\_ax;\\ 14 | \>\> double \> {\fov torsion}[\,];\\ 15 | \>\> int \> *{\fov jstat};\\ 16 | \\ 17 | ARGUMENTS\\ 18 | \>Input Arguments:\\ 19 | \>\> {\fov curve}\> - \> \begin{minipg2} 20 | Pointer to the curve. 21 | \end{minipg2}\\ 22 | \>\> {\fov ax}\> - \> \begin{minipg2} 23 | The parameter values 24 | \end{minipg2}\\ 25 | \>\> {\fov num}\> - \> \begin{minipg2} 26 | No. of parameter values 27 | \end{minipg2}\\ 28 | \\ 29 | \>Output Arguments:\\ 30 | \>\> {\fov }\> - \> \begin{minipg2} 31 | 32 | \end{minipg2}\\ 33 | \>\> {\fov torsion}\> - \> \begin{minipg2} 34 | The "num\_ax" torsion values computed 35 | \end{minipg2}\\ 36 | \>\> {\fov jstat} \> - \> Status messages\\ 37 | \>\>\>\>\> $> 0$ : Warning.\\ 38 | \>\>\>\>\> $= 0$ : Ok.\\ 39 | \>\>\>\>\> $< 0$ : Error.\\ 40 | \\ 41 | EXAMPLE OF USE\\ 42 | \> \{ \\ 43 | 44 | \>\> SISLCurve \> *{\fov curve}; \, /* Must be defined */\\ 45 | \>\> double \> {\fov ax}[10]; \, /* Must be defined */\\ 46 | \>\> int \> {\fov num}\_ax = 10;\\ 47 | \>\> double \> {\fov torsion}[10]; /* Size equal to num\_ax */\\ 48 | \>\> int \> {\fov jstat} = 0;\\ \>\> \ldots \\ 49 | \>\>s2553(\begin{minipg4} 50 | {\fov curve}, {\fov ax}, num\_ {\fov ax}, {\fov torsion}, \&jstat ); 51 | \end{minipg4}\\ 52 | \>\> \ldots \\ 53 | \> \} 54 | \end{tabbing} 55 | -------------------------------------------------------------------------------- /doc/manual/func/s2556.tex: -------------------------------------------------------------------------------- 1 | \subsection{Evaluate the Variation of Curvature (VoC) of a curve at given parameter values.} 2 | \funclabel{s2556} 3 | \begin{minipg1} 4 | Evaluate the Variation of Curvature (VoC) of a curve 5 | at given parameter values ax[ 0 ],...,ax[ num\_ax - 1 ]. 6 | \end{minipg1} \\ \\ 7 | SYNOPSIS\\ 8 | \> void s2556(\begin{minipg3} 9 | {\fov curve}, {\fov ax}, num\_ {\fov ax}, {\fov VoC}, jstat ) 10 | \end{minipg3}\\ 11 | \>\> SISLCurve \> *{\fov curve};\\ 12 | \>\> double \> {\fov ax}[\,];\\ 13 | \>\> int \> {\fov num}\_ax;\\ 14 | \>\> double \> {\fov VoC}[\,];\\ 15 | \>\> int \> *{\fov jstat};\\ 16 | \\ 17 | ARGUMENTS\\ 18 | \>Input Arguments:\\ 19 | \>\> {\fov curve}\> - \> \begin{minipg2} 20 | Pointer to the curve. 21 | \end{minipg2}\\ 22 | \>\> {\fov ax}\> - \> \begin{minipg2} 23 | The parameter values 24 | \end{minipg2}\\ 25 | \>\> {\fov num}\> - \> \begin{minipg2} 26 | No. of parameter values 27 | \end{minipg2}\\ 28 | \\ 29 | \>Output Arguments:\\ 30 | \>\> {\fov }\> - \> \begin{minipg2} 31 | 32 | \end{minipg2}\\ 33 | \>\> {\fov VoC}\> - \> \begin{minipg2} 34 | The "num\_ax" Variation of Curvature (VoC) values computed 35 | \end{minipg2}\\ 36 | \>\> {\fov jstat} \> - \> Status messages\\ 37 | \>\>\>\>\> $> 0$ : Warning.\\ 38 | \>\>\>\>\> $= 0$ : Ok.\\ 39 | \>\>\>\>\> $< 0$ : Error.\\ 40 | \\ 41 | EXAMPLE OF USE\\ 42 | \> \{ \\ 43 | 44 | \>\> SISLCurve \> *{\fov curve}; \, /* Must be defined */\\ 45 | \>\> double \> {\fov ax}[10]; \, /* Must be defined */\\ 46 | \>\> int \> {\fov num}\_ax = 10;\\ 47 | \>\> double \> {\fov VoC}[10]; /* Size equal to num\_ax */\\ 48 | \>\> int \> {\fov jstat} = 0;\\ \>\> \ldots \\ 49 | \>\>s2556(\begin{minipg4} 50 | {\fov curve}, {\fov ax}, num\_ {\fov ax}, {\fov VoC}, \&jstat ); 51 | \end{minipg4}\\ 52 | \>\> \ldots \\ 53 | \> \} 54 | \end{tabbing} 55 | -------------------------------------------------------------------------------- /doc/manual/func/s6shadepol.tex: -------------------------------------------------------------------------------- 1 | \subsection{Shade a polygon.} 2 | \funclabel{s6shadepol} 3 | \begin{minipg1} 4 | Shade a polygon using Gouraud shading. 5 | The polygon is represented by a sequence of points 6 | (vertices) and a normal to each point. 7 | Only for dimension equal to 3. 8 | \end{minipg1} \\ \\ 9 | SYNOPSIS\\ 10 | \>void s6shadepol(\begin{minipg3} 11 | {\fov points}, {\fov numpoints}) 12 | \end{minipg3}\\[0.3ex] 13 | \>\> double \> {\fov points}[\,];\\ 14 | \>\> int \> {\fov numpoints};\\ 15 | \\ 16 | ARGUMENTS\\ 17 | \>Input Arguments:\\ 18 | \>\> {\fov points} \> - \> \begin{minipg2} 19 | Points and normals stored in sequence. 20 | ie. $(x_{0},y_{0},z_{0},x^n_{0},y^n_{0},z^n_{0}, 21 | x_{1},y_{1},z_{1},x^n_{1},y^n_{1},z^n_{1},\ldots)$ 22 | \end{minipg2}\\ 23 | \>\> {\fov numpoints}\> - \> \begin{minipg2} 24 | Number of points in the sequence. 25 | \end{minipg2}\\ 26 | \\ 27 | EXAMPLE OF USE\\ 28 | \> \{ \\ 29 | \>\> double \> {\fov points[24]};\\ 30 | \>\> int \> {\fov numpoints = 4};\\ 31 | \>\> \ldots \\ 32 | \>\>s6shadepol(\begin{minipg4} 33 | {\fov points}, {\fov numpoints}) 34 | \end{minipg4}\\ 35 | \>\> \ldots \\ 36 | \> \} 37 | \end{tabbing} 38 | -------------------------------------------------------------------------------- /doc/manual/manual.ilg: -------------------------------------------------------------------------------- 1 | This is makeindex, version 2.15 [TeX Live 2017] (kpathsea + Thai support). 2 | Scanning input file manual.idx....done (191 entries accepted, 0 rejected). 3 | Sorting entries....done (1486 comparisons). 4 | Generating output file manual.ind....done (195 lines written, 0 warnings). 5 | Output written in manual.ind. 6 | Transcript written in manual.ilg. 7 | -------------------------------------------------------------------------------- /doc/manual/manual.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SINTEF-Geometry/SISL/c9405f5e9a6fd591538094b07d5ba53b7a2d5f3e/doc/manual/manual.pdf -------------------------------------------------------------------------------- /doc/manual/manual.tex: -------------------------------------------------------------------------------- 1 | %\documentstyle[a4,twoside,epsf,makeidx]{sislman} 2 | \documentclass[a4paper]{report} 3 | \usepackage{sislman2} 4 | \usepackage{graphicx} 5 | \usepackage{fancyvrb} 6 | \pagestyle{headings} 7 | \usepackage{imakeidx} 8 | \makeindex 9 | \begin{document} 10 | 11 | \begin{titlepage} 12 | \vspace{5 cm} 13 | \begin{center} 14 | \Huge 15 | \textbf{SISL} \\ 16 | \huge 17 | The SINTEF Spline Library \\ 18 | \LARGE 19 | Reference Manual \\ 20 | (version 4.7)\\ 21 | \vspace{10 mm} 22 | \large 23 | SINTEF Digital, Mathematics and Cybernetics \\ 24 | Mars 16, 2021 25 | \end{center} 26 | 27 | \end{titlepage} 28 | 29 | \pagenumbering{roman} 30 | \tableofcontents 31 | \cleardoublepage 32 | \pagenumbering{arabic} 33 | \setcounter{page}{1} 34 | \input{foreword} 35 | \input{chap_intro_abridged} 36 | \cleardoublepage 37 | \input{chap_curve_definition} 38 | \cleardoublepage 39 | \input{chap_curve_interrogation} 40 | \cleardoublepage 41 | \input{chap_curve_analysis} 42 | \cleardoublepage 43 | \input{chap_curve_utilities} 44 | \cleardoublepage 45 | \input{chap_surface_definition} 46 | \cleardoublepage 47 | \input{chap_surface_interrogation} 48 | \cleardoublepage 49 | \input{chap_surface_analysis} 50 | \cleardoublepage 51 | \input{chap_surface_utilities} 52 | \cleardoublepage 53 | \input{chap_data_reduction} 54 | \cleardoublepage 55 | \input{sample_programs} 56 | \input{viewer} 57 | \cleardoublepage 58 | \input{chap_error_codes} 59 | \cleardoublepage 60 | \input{licensing_information} 61 | \cleardoublepage 62 | \printindex 63 | \end{document} 64 | -------------------------------------------------------------------------------- /doc/manual/raytracing.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SINTEF-Geometry/SISL/c9405f5e9a6fd591538094b07d5ba53b7a2d5f3e/doc/manual/raytracing.pdf -------------------------------------------------------------------------------- /doc/manual/sec_box_object.tex: -------------------------------------------------------------------------------- 1 | 2 | 3 | \subsection{Bounding box object.} \label{sec:bbox} 4 | 5 | In the library a bounding box is stored in a struct SISLbox 6 | containing the following: 7 | \input{type/SISLBox} 8 | \pgsbreak 9 | \input{func/newbox} 10 | 11 | -------------------------------------------------------------------------------- /doc/manual/sec_cone_object.tex: -------------------------------------------------------------------------------- 1 | 2 | 3 | \subsection{Normal cone object.} \label{sec:dcone} 4 | 5 | In the library a direction cone is stored in a struct SISLdir 6 | containing the following: 7 | 8 | \input{type/SISLDir} 9 | \pgsbreak 10 | \input{func/newdir} 11 | 12 | -------------------------------------------------------------------------------- /doc/manual/sec_curve_object.tex: -------------------------------------------------------------------------------- 1 | \section{\label{curveobject}Curve Object} 2 | 3 | In the library both B-spline and NURBS curves are stored in a struct SISLCurve containing 4 | the following: 5 | \input{type/SISLCurve} 6 | Note that in the rational case are the curve coefficients stored as 7 | \newline 8 | ${w_1 {\bf p}_1, w_1, w_2 {\bf p}_2, w_2, \ldots, 9 | w_n {\bf p}_n, w_n}$ where $w_i$ are the weights and ${\bf p}_i$, $i=1, \ldots, n$ are the 10 | curve coefficients. 11 | 12 | When using a curve, do not declare a SISLCurve but a pointer to a SISLCurve, 13 | and initialize it to point on NULL. Then you may use the 14 | dynamic allocation functions newCurve and freeCurve described below, 15 | to create and delete curves. 16 | 17 | There are two ways to pass coefficient and knot arrays 18 | to newCurve. 19 | By setting $icopy=1$, newCurve 20 | allocates new arrays and copies the given ones. 21 | But by setting $icopy=0$ or 2, newCurve simply points 22 | to the given arrays. Therefore it is IMPORTANT that the 23 | given arrays have been allocated in free memory beforehand. 24 | 25 | \pgsbreak 26 | \input{func/newCurve} 27 | \pgsbreak 28 | \input{func/copyCurve} 29 | \pgsbreak 30 | \input{func/freeCurve} 31 | -------------------------------------------------------------------------------- /doc/manual/sec_intcurve_object.tex: -------------------------------------------------------------------------------- 1 | \section{Intersection Curves} 2 | Intersection curves are tied to two objects where at 3 | least one is a surface or a curve. 4 | The representation of the intersection curves in the SISLIntcurve structure has two levels. 5 | The first level is guide points which are 6 | points in the parametric space and on the intersection 7 | curve. In every case 8 | there must be at least one guide point, but there is no 9 | upper bound. Guide points are computed in the topology detection routines. 10 | The second level is curves, 11 | one curve in the geometric space and one curve in each 12 | parameter plane if each surface is parametric. These curves are the results of the marching routines. 13 | 14 | \subsection{Intersection curve object.} 15 | 16 | In the library an intersection curve is stored in a struct SISLIntcurve 17 | containing the following: 18 | \input{type/SISLIntcurve} 19 | Singularities are points on the intersection curve where, in an intersection between a curve and a surface, the tangent 20 | of the curve lies in the tangent plane of the surface, or in an intersection between two surfaces, the tangent plane 21 | of the surfaces coincide. 22 | \pgsbreak 23 | \input{func/newIntcurve} 24 | \pgsbreak 25 | \input{func/freeIntcurve} 26 | \pgsbreak 27 | \input{func/freeIntcrvlist} 28 | -------------------------------------------------------------------------------- /doc/manual/sec_surface_object.tex: -------------------------------------------------------------------------------- 1 | \section{\label{surfaceobject}Surface Object} 2 | 3 | In the library both B-spline and NURBS surfaces are stored in a struct SISLSurf containing 4 | the following: 5 | \input{type/SISLSurf} 6 | When using a surface, do not declare a Surface but a pointer to a Surface, 7 | and initialize it to point to NULL. Then you may use the 8 | dynamic allocation functions newSurface and freeSurface, which are described below, 9 | to create and delete surfaces. 10 | 11 | There are two ways to pass coefficient and knot arrays 12 | to newSurf. 13 | By setting $icopy=1$, newSurf 14 | allocates new arrays and copies the given ones. 15 | But by setting $icopy=0$ or 2, newSurf simply points 16 | to the given arrays. Therefore it is IMPORTANT that the 17 | given arrays have been allocated in free memory beforehand. 18 | \pgsbreak 19 | \input{func/newSurf} 20 | \pgsbreak 21 | \input{func/copySurface} 22 | \pgsbreak 23 | \input{func/freeSurf} 24 | -------------------------------------------------------------------------------- /doc/manual/sislman2.sty: -------------------------------------------------------------------------------- 1 | \def \RR{\hbox{\rm I\negthinspace R}} 2 | 3 | \newif\if@restonecol 4 | \def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi 5 | \columnseprule \z@ 6 | \columnsep 35pt\twocolumn[\@makeschapterhead{Index}] 7 | \@mkboth{INDEX}{INDEX}\thispagestyle{plain}\parindent\z@ 8 | \parskip\z@ plus .3pt\relax\let\item\@idxitem} 9 | \def\@idxitem{\par\hangindent 40pt} 10 | \def\subitem{\par\hangindent 40pt \hspace*{20pt}} 11 | \def\subsubitem{\par\hangindent 40pt \hspace*{30pt}} 12 | \def\endtheindex{\if@restonecol\onecolumn\else\clearpage\fi} 13 | \def\indexspace{\par \vskip 10pt plus 5pt minus 3pt\relax} 14 | 15 | \def\pgsbreak{ 16 | \vfill 17 | \pagebreak} 18 | 19 | \def\newpagetabs{ 20 | \end{tabbing} 21 | \vfill 22 | \newpage 23 | \begin{tabbing} 24 | ******\=****\=************\=***\=*******\=*****\= \kill} 25 | 26 | \def\funclabel#1{ 27 | \label{#1} 28 | \index{#1()} 29 | \begin{tabbing} 30 | ******\=****\=************\=***\=*******\=*****\= \kill 31 | NAME\\ 32 | \>\large 33 | {\bf{#1}} 34 | \normalsize -} 35 | 36 | \def\typelabel#1{ 37 | \label{#1} 38 | \index{#1()} 39 | \begin{tabbing} 40 | ****\=************\=****\=*****\=*****\=*****\= \kill} 41 | 42 | \newcommand{\fov}{\sl} 43 | 44 | \newenvironment{minipg1}{\begin{minipage}[t]{109.9mm}}{\end{minipage}} 45 | \newenvironment{minipg2}{\begin{minipage}[t]{88.8mm}}{\end{minipage}} 46 | \newenvironment{minipg3}{\begin{minipage}[t]{106mm}}{\end{minipage}} 47 | \newenvironment{minipg4}{\begin{minipage}[t]{106.2mm}}{\end{minipage}} 48 | \newenvironment{minipg5}{\begin{minipage}[t]{69.5mm}}{\end{minipage}} 49 | \newenvironment{minipg6}{\begin{minipage}[t]{125.5mm}}{\end{minipage}} 50 | \newenvironment{minipg7}{\begin{minipage}[t]{105mm}}{\end{minipage}} 51 | -------------------------------------------------------------------------------- /doc/manual/surf1.fig: -------------------------------------------------------------------------------- 1 | #FIG 3.2 2 | Landscape 3 | Center 4 | Metric 5 | A4 6 | 100.00 7 | Single 8 | -2 9 | 1200 2 10 | 1 3 0 1 0 7 50 -1 0 0.000 1 0.0000 3330 7335 45 45 3330 7335 3375 7335 11 | 1 3 0 1 0 7 50 -1 0 0.000 1 0.0000 5670 8595 45 45 5670 8595 5715 8595 12 | 1 3 0 1 0 7 50 -1 0 0.000 1 0.0000 6165 6975 45 45 6165 6975 6210 6975 13 | 1 3 0 1 0 7 50 -1 0 0.000 1 0.0000 7515 7020 45 45 7515 7020 7560 7020 14 | 1 3 0 1 0 7 50 -1 0 0.000 1 0.0000 6570 5535 45 45 6570 5535 6615 5535 15 | 1 3 0 1 0 7 50 -1 0 0.000 1 0.0000 3555 5895 45 45 3555 5895 3600 5895 16 | 1 3 0 1 0 7 50 -1 0 0.000 1 0.0000 5265 5760 45 45 5265 5760 5310 5760 17 | 1 3 0 1 0 7 50 -1 0 0.000 1 0.0000 4680 7020 45 45 4680 7020 4725 7020 18 | 1 3 0 1 0 7 50 -1 0 0.000 1 0.0000 5040 5400 30 30 5040 5400 5070 5400 19 | 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 9 20 | 3330 7335 4680 7020 5674 8593 6120 6975 7515 7020 6570 5535 21 | 5040 5400 3555 5895 3330 7335 22 | 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 23 | 4680 7020 5265 5760 6165 6975 24 | 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 3 25 | 6615 5535 5265 5760 3555 5895 26 | 3 0 0 1 0 7 50 -1 -1 0.000 0 0 0 3 27 | 3330 7335 4680 7020 5670 8595 28 | 0.000 1.000 0.000 29 | 3 0 0 1 0 7 50 -1 -1 0.000 0 0 0 3 30 | 5670 8595 6120 6975 7515 7020 31 | 0.000 1.000 0.000 32 | 3 0 0 1 0 7 50 -1 -1 0.000 0 0 0 3 33 | 3330 7335 3555 5850 5040 5400 34 | 0.000 1.000 0.000 35 | 3 0 0 1 0 7 50 -1 -1 0.000 0 0 0 3 36 | 5044 5400 6570 5535 7515 7020 37 | 0.000 1.000 0.000 38 | 3 0 0 1 0 7 50 -1 -1 0.000 0 0 0 3 39 | 6252 7275 5265 5760 3804 5973 40 | 0.000 1.000 0.000 41 | 3 0 0 1 0 7 50 -1 -1 0.000 0 0 0 3 42 | 5895 7875 4905 6525 3491 6614 43 | 0.000 1.000 0.000 44 | 3 0 0 1 0 7 50 -1 -1 0.000 0 0 0 3 45 | 6840 7065 5895 5670 4500 5580 46 | 0.000 1.000 0.000 47 | 3 0 0 1 0 7 50 -1 -1 0.000 0 0 0 3 48 | 5130 7830 5670 6345 6885 6165 49 | 0.000 1.000 0.000 50 | 3 0 0 1 0 7 50 -1 -1 0.000 0 0 0 3 51 | 5400 8190 5985 6705 7200 6570 52 | 0.000 1.000 0.000 53 | 3 0 0 1 0 7 50 -1 -1 0.000 0 0 0 3 54 | 4860 7515 5517 6087 6637 5879 55 | 0.000 1.000 0.000 56 | 3 0 0 1 0 7 50 -1 -1 0.000 0 0 0 3 57 | 4320 7245 4995 5760 5788 5509 58 | 0.000 1.000 0.000 59 | 3 0 0 1 0 7 50 -1 -1 0.000 0 0 0 3 60 | 3600 7290 3945 5895 5265 5400 61 | 0.000 1.000 0.000 62 | 3 0 0 1 0 7 50 -1 -1 0.000 0 0 0 3 63 | 6054 7541 5040 6210 3600 6300 64 | 0.000 1.000 0.000 65 | 3 0 0 1 0 7 50 -1 -1 0.000 0 0 0 3 66 | 6481 7134 5580 5715 4221 5712 67 | 0.000 1.000 0.000 68 | 3 0 0 1 0 7 50 -1 -1 0.000 0 0 0 3 69 | 7200 7020 6210 5580 4788 5478 70 | 0.000 1.000 0.000 71 | 3 0 0 1 0 7 50 -1 -1 0.000 0 0 0 3 72 | 4635 7335 5265 5715 6330 5676 73 | 0.000 1.000 0.000 74 | 3 0 0 1 0 7 50 -1 -1 0.000 0 0 0 3 75 | 3915 7245 4476 5817 5549 5447 76 | 0.000 1.000 0.000 77 | 3 0 0 1 0 7 50 -1 -1 0.000 0 0 0 3 78 | 5760 8235 4815 6750 3403 6957 79 | 0.000 1.000 0.000 80 | -------------------------------------------------------------------------------- /doc/manual/titlepage.sty: -------------------------------------------------------------------------------- 1 | % THIS is a dummy titlepage.sty file - it was missing from the two 2 | % manual directories, but required by the sislman.sty documentstyle file. 3 | -------------------------------------------------------------------------------- /doc/manual/type/SISLBox.tex: -------------------------------------------------------------------------------- 1 | \typelabel{SISLBox} 2 | \> double \>*emax; \>\> \begin{minipg2} 3 | Allocated array containing 4 | the minimum values of the bounding box 5 | \end{minipg2}\\[0.3ex] 6 | \> double \>*emin; \>\> \begin{minipg2} 7 | Allocated array containing 8 | the maximum values of the bounding box 9 | \end{minipg2}\\[0.3ex] 10 | \> int \>imin; \>\> \begin{minipg2} 11 | The index of the minimum coefficient 12 | {\fov ecoef}[{\fov imin}]. 13 | Only used in dimension one. 14 | {\fov ecoef} is the control polygon of 15 | the curve/surface. 16 | \end{minipg2}\\[0.3ex] 17 | \> int \>imax; \>\> \begin{minipg2} 18 | The index of the maximum coefficient 19 | {\fov ecoef}[{\fov imax}]. 20 | Only used in dimension one. 21 | {\fov ecoef} is the control polygon of 22 | the curve/surface. 23 | \end{minipg2}\\[0.3ex] 24 | \end{tabbing} 25 | -------------------------------------------------------------------------------- /doc/manual/type/SISLDir.tex: -------------------------------------------------------------------------------- 1 | \typelabel{SISLDir} 2 | \> int \>{\fov igtpi}; \>\> \begin{minipg2} 3 | To mark if the angle of direction cone 4 | is greater than $\pi$. 5 | \end{minipg2}\\ 6 | \>\>\>\>\> $= 0$ :\>\hspace*{0.3em}\begin{minipg5} 7 | The direction of a surface 8 | and its boundary curves or a curve 9 | is not greater than $\pi$ in any 10 | parameter direction. 11 | \end{minipg5}\\[0.3ex] 12 | \>\>\>\>\> $= 1$ :\>\hspace*{0.3em}\begin{minipg5} 13 | The direction of a surface or a curve 14 | is greater than $\pi$ in the first 15 | parameter direction. 16 | \end{minipg5}\\[0.8ex] 17 | \>\>\>\>\> $= 2$ :\>\hspace*{0.3em}\begin{minipg5} 18 | The angle of direction cone of a surface is greater 19 | than $\pi$ in the second parameter 20 | direction. 21 | \end{minipg5}\\[0.8ex] 22 | \>\>\>\>\> $= 10:$\>\hspace*{0.3em}\begin{minipg5} 23 | The angle of direction cone of a boundary curve 24 | in first parameter direction of a 25 | surface is greater than $\pi$. 26 | \end{minipg5}\\[0.8ex] 27 | \>\>\>\>\> $= 20:$\>\hspace*{0.3em}\begin{minipg5} 28 | The angle of direction cone of a boundary curve 29 | in second parameter direction of a 30 | surface is greater than $\pi$. 31 | \end{minipg5}\\[0.3ex] 32 | \> double \>*{\fov ecoef}; \>\> \begin{minipg2} 33 | Allocated array containing 34 | the coordinates of the centre of the cone. 35 | \end{minipg2}\\[0.3ex] 36 | \> double \>{\fov aang}; \>\> \begin{minipg2} 37 | The angle from the centre which 38 | describes the cone. 39 | \end{minipg2}\\[0.3ex] 40 | \end{tabbing} 41 | -------------------------------------------------------------------------------- /doc/manual/type/SISLIntcurve.tex: -------------------------------------------------------------------------------- 1 | \typelabel{SISLIntcurve} 2 | \> int \>{\fov ipoint}; \>\>Number of guide points defining the curve.\\ 3 | \> double \>*{\fov epar1}; \>\> \begin{minipg2} 4 | Pointer to the parameter values of the points in the first object. 5 | \end{minipg2}\\[0.3ex] 6 | \> double \>*{\fov epar2}; \>\> \begin{minipg2} 7 | Pointer to the parameter values of the points in the second object. 8 | \end{minipg2}\\[0.3ex] 9 | \> int \>{\fov ipar1}; \>\> Number of parameter directions of first object.\\ 10 | \> int \>{\fov ipar2}; \>\>Number of parameter directions of second object.\\ 11 | \> SISLCurve \>*{\fov pgeom}; \>\> \begin{minipg2} 12 | Pointer to the intersection curve in the 13 | geometry space. If the curve is not 14 | computed, pgeom points to NULL. 15 | \end{minipg2}\\[0.3ex] 16 | \> SISLCurve \>*{\fov ppar1}; \>\> \begin{minipg2} 17 | Pointer to the intersection curve in the 18 | parameter plane of the first object. If 19 | the curve is not computed, ppar1 points 20 | to NULL. 21 | \end{minipg2}\\[0.3ex] 22 | \> SISLCurve \>*{\fov ppar2}; \>\> \begin{minipg2} 23 | Pointer to the intersection curve in the 24 | parameter plane of the second object. If 25 | the curve is not computed, ppar2 points 26 | to NULL. 27 | \end{minipg2}\\[0.3ex] 28 | \> int \>{\fov itype}; \>\>Type of curve:\\ 29 | \>\>\>\>\> $= 1$ :\> Straight line.\\ 30 | \>\>\>\>\> $= 2$ :\> Closed loop. No singularities.\\ 31 | \>\>\>\>\> $= 3$ :\> Closed loop. One singularity. Not used.\\ 32 | \>\>\>\>\> $= 4$ :\> Open curve. No singularity.\\ 33 | \>\>\>\>\> $= 5$ :\> \begin{minipg5} 34 | Open curve. Singularity at the 35 | beginning of the curve. 36 | \end{minipg5}\\[0.8ex] 37 | \>\>\>\>\> $= 6$ :\> \begin{minipg5} 38 | Open curve. Singularity at the end 39 | of the curve. 40 | \end{minipg5}\\[0.8ex] 41 | \>\>\>\>\> $= 7$ :\> \begin{minipg5} 42 | Open curve. Singularity at the beginning 43 | and end of the curve. 44 | \end{minipg5}\\[0.8ex] 45 | \>\>\>\>\> $= 8$ :\> An isolated singularity. Not used.\\ 46 | \end{tabbing} 47 | -------------------------------------------------------------------------------- /doc/manual/type/test.tex: -------------------------------------------------------------------------------- 1 | \documentstyle[twoside]{sislman} 2 | 3 | \begin{document} 4 | 5 | \chapter{Curve definition.} 6 | 7 | \section{Straight line between two points.} 8 | 9 | \input{SISLCurve} 10 | \input{SISLSurf} 11 | \input{SISLBox} 12 | \input{SISLDir} 13 | \input{SISLIntcurve} 14 | \end{document} 15 | -------------------------------------------------------------------------------- /include/sisl-copyright.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 1998, 2000-2007, 2010, 2011, 2012, 2013 SINTEF Digital, 3 | * Applied Mathematics, Norway. 4 | * 5 | * Contact information: E-mail: tor.dokken@sintef.no 6 | * SINTEF Digital, Department of Mathematics and Cybernetics, 7 | * P.O. Box 124 Blindern, 8 | * 0314 Oslo, Norway. 9 | * 10 | * This file is part of SISL. 11 | * 12 | * SISL is free software: you can redistribute it and/or modify 13 | * it under the terms of the GNU Affero General Public License as 14 | * published by the Free Software Foundation, either version 3 of the 15 | * License, or (at your option) any later version. 16 | * 17 | * SISL is distributed in the hope that it will be useful, 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | * GNU Affero General Public License for more details. 21 | * 22 | * You should have received a copy of the GNU Affero General Public 23 | * License along with SISL. If not, see 24 | * . 25 | * 26 | * In accordance with Section 7(b) of the GNU Affero General Public 27 | * License, a covered work must retain the producer line in every data 28 | * file that is created or manipulated using SISL. 29 | * 30 | * Other Usage 31 | * You can be released from the requirements of the license by purchasing 32 | * a commercial license. Buying such a license is mandatory as soon as you 33 | * develop commercial activities involving the SISL library without 34 | * disclosing the source code of your own applications. 35 | * 36 | * This file may be used in accordance with the terms contained in a 37 | * written agreement between you and SINTEF Digital. 38 | */ 39 | 40 | #ifndef _SISL_COPYRIGHT_H 41 | #define _SISL_COPYRIGHT_H 42 | #endif 43 | -------------------------------------------------------------------------------- /src/s6crss.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 1998, 2000-2007, 2010, 2011, 2012, 2013 SINTEF Digital, 3 | * Applied Mathematics, Norway. 4 | * 5 | * Contact information: E-mail: tor.dokken@sintef.no 6 | * SINTEF Digital, Department of Mathematics and Cybernetics, 7 | * P.O. Box 124 Blindern, 8 | * 0314 Oslo, Norway. 9 | * 10 | * This file is part of SISL. 11 | * 12 | * SISL is free software: you can redistribute it and/or modify 13 | * it under the terms of the GNU Affero General Public License as 14 | * published by the Free Software Foundation, either version 3 of the 15 | * License, or (at your option) any later version. 16 | * 17 | * SISL is distributed in the hope that it will be useful, 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | * GNU Affero General Public License for more details. 21 | * 22 | * You should have received a copy of the GNU Affero General Public 23 | * License along with SISL. If not, see 24 | * . 25 | * 26 | * In accordance with Section 7(b) of the GNU Affero General Public 27 | * License, a covered work must retain the producer line in every data 28 | * file that is created or manipulated using SISL. 29 | * 30 | * Other Usage 31 | * You can be released from the requirements of the license by purchasing 32 | * a commercial license. Buying such a license is mandatory as soon as you 33 | * develop commercial activities involving the SISL library without 34 | * disclosing the source code of your own applications. 35 | * 36 | * This file may be used in accordance with the terms contained in a 37 | * written agreement between you and SINTEF Digital. 38 | */ 39 | 40 | #include "sisl-copyright.h" 41 | 42 | /* 43 | * 44 | * $Id: s6crss.c,v 1.1 1994-04-21 12:10:42 boh Exp $ 45 | * 46 | */ 47 | 48 | 49 | #define S6CRSS 50 | 51 | #include "sislP.h" 52 | 53 | #if defined(SISLNEEDPROTOTYPES) 54 | void 55 | s6crss(double e1[],double e2[],double e3[]) 56 | #else 57 | void s6crss(e1,e2,e3) 58 | double e1[]; 59 | double e2[]; 60 | double e3[]; 61 | #endif 62 | /* 63 | ********************************************************************* 64 | * 65 | * PURPOSE : To make the cross product of two 3-D vectors 66 | * 67 | * INPUT : e1 - First 3-D vector 68 | * e2 - Second 3-D vector 69 | * 70 | * OUTPUT : e3 - The vector containing the cross product e1xe2 71 | * 72 | * 73 | * METHOD : The cross product is calculated by using its definition. 74 | * 75 | *- 76 | * CALLS : 77 | * 78 | * WRITTEN BY : Tor Dokken, SI, Oslo, Norway. 1988-may-03 79 | * 80 | ********************************************************************* 81 | */ 82 | { 83 | e3[0] = e1[1]*e2[2] - e1[2]*e2[1]; 84 | e3[1] = e1[2]*e2[0] - e1[0]*e2[2]; 85 | e3[2] = e1[0]*e2[1] - e1[1]*e2[0]; 86 | } 87 | -------------------------------------------------------------------------------- /src/s6err.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 1998, 2000-2007, 2010, 2011, 2012, 2013 SINTEF Digital, 3 | * Applied Mathematics, Norway. 4 | * 5 | * Contact information: E-mail: tor.dokken@sintef.no 6 | * SINTEF Digital, Department of Mathematics and Cybernetics, 7 | * P.O. Box 124 Blindern, 8 | * 0314 Oslo, Norway. 9 | * 10 | * This file is part of SISL. 11 | * 12 | * SISL is free software: you can redistribute it and/or modify 13 | * it under the terms of the GNU Affero General Public License as 14 | * published by the Free Software Foundation, either version 3 of the 15 | * License, or (at your option) any later version. 16 | * 17 | * SISL is distributed in the hope that it will be useful, 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | * GNU Affero General Public License for more details. 21 | * 22 | * You should have received a copy of the GNU Affero General Public 23 | * License along with SISL. If not, see 24 | * . 25 | * 26 | * In accordance with Section 7(b) of the GNU Affero General Public 27 | * License, a covered work must retain the producer line in every data 28 | * file that is created or manipulated using SISL. 29 | * 30 | * Other Usage 31 | * You can be released from the requirements of the license by purchasing 32 | * a commercial license. Buying such a license is mandatory as soon as you 33 | * develop commercial activities involving the SISL library without 34 | * disclosing the source code of your own applications. 35 | * 36 | * This file may be used in accordance with the terms contained in a 37 | * written agreement between you and SINTEF Digital. 38 | */ 39 | 40 | #include "sisl-copyright.h" 41 | 42 | /* 43 | * 44 | * $Id: s6err.c,v 1.1 1994-04-21 12:10:42 boh Exp $ 45 | * 46 | */ 47 | 48 | 49 | #define S6ERR 50 | 51 | #include "sislP.h" 52 | 53 | #if defined(SISLNEEDPROTOTYPES) 54 | void s6err(char *rut,int jstat,int ipos) 55 | #else 56 | void s6err(rut,jstat,ipos) 57 | char *rut; 58 | int jstat; 59 | int ipos; 60 | #endif 61 | { 62 | (void)fprintf(stderr,"\nError status : %d",jstat); 63 | (void)fprintf(stderr," Call from routine : %s",rut); 64 | (void)fprintf(stderr," Position : %d\n",ipos); 65 | } 66 | -------------------------------------------------------------------------------- /src/s6line.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 1998, 2000-2007, 2010, 2011, 2012, 2013 SINTEF Digital, 3 | * Applied Mathematics, Norway. 4 | * 5 | * Contact information: E-mail: tor.dokken@sintef.no 6 | * SINTEF Digital, Department of Mathematics and Cybernetics, 7 | * P.O. Box 124 Blindern, 8 | * 0314 Oslo, Norway. 9 | * 10 | * This file is part of SISL. 11 | * 12 | * SISL is free software: you can redistribute it and/or modify 13 | * it under the terms of the GNU Affero General Public License as 14 | * published by the Free Software Foundation, either version 3 of the 15 | * License, or (at your option) any later version. 16 | * 17 | * SISL is distributed in the hope that it will be useful, 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | * GNU Affero General Public License for more details. 21 | * 22 | * You should have received a copy of the GNU Affero General Public 23 | * License along with SISL. If not, see 24 | * . 25 | * 26 | * In accordance with Section 7(b) of the GNU Affero General Public 27 | * License, a covered work must retain the producer line in every data 28 | * file that is created or manipulated using SISL. 29 | * 30 | * Other Usage 31 | * You can be released from the requirements of the license by purchasing 32 | * a commercial license. Buying such a license is mandatory as soon as you 33 | * develop commercial activities involving the SISL library without 34 | * disclosing the source code of your own applications. 35 | * 36 | * This file may be used in accordance with the terms contained in a 37 | * written agreement between you and SINTEF Digital. 38 | */ 39 | 40 | #include "sisl-copyright.h" 41 | 42 | /* 43 | * 44 | * $Id: s6line.c,v 1.1 1994-04-21 12:10:42 boh Exp $ 45 | * 46 | */ 47 | 48 | 49 | #define S6LINE 50 | 51 | #include "sislP.h" 52 | 53 | #if defined(SISLNEEDPROTOTYPES) 54 | void 55 | s6line(double epoint[]) 56 | #else 57 | void s6line(epoint) 58 | double epoint[]; 59 | #endif 60 | { 61 | printf("\n s6line: %f %f %f ",epoint[0],epoint[1],epoint[2]); 62 | } 63 | -------------------------------------------------------------------------------- /src/s6move.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 1998, 2000-2007, 2010, 2011, 2012, 2013 SINTEF Digital, 3 | * Applied Mathematics, Norway. 4 | * 5 | * Contact information: E-mail: tor.dokken@sintef.no 6 | * SINTEF Digital, Department of Mathematics and Cybernetics, 7 | * P.O. Box 124 Blindern, 8 | * 0314 Oslo, Norway. 9 | * 10 | * This file is part of SISL. 11 | * 12 | * SISL is free software: you can redistribute it and/or modify 13 | * it under the terms of the GNU Affero General Public License as 14 | * published by the Free Software Foundation, either version 3 of the 15 | * License, or (at your option) any later version. 16 | * 17 | * SISL is distributed in the hope that it will be useful, 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | * GNU Affero General Public License for more details. 21 | * 22 | * You should have received a copy of the GNU Affero General Public 23 | * License along with SISL. If not, see 24 | * . 25 | * 26 | * In accordance with Section 7(b) of the GNU Affero General Public 27 | * License, a covered work must retain the producer line in every data 28 | * file that is created or manipulated using SISL. 29 | * 30 | * Other Usage 31 | * You can be released from the requirements of the license by purchasing 32 | * a commercial license. Buying such a license is mandatory as soon as you 33 | * develop commercial activities involving the SISL library without 34 | * disclosing the source code of your own applications. 35 | * 36 | * This file may be used in accordance with the terms contained in a 37 | * written agreement between you and SINTEF Digital. 38 | */ 39 | 40 | #include "sisl-copyright.h" 41 | 42 | /* 43 | * 44 | * $Id: s6move.c,v 1.1 1994-04-21 12:10:42 boh Exp $ 45 | * 46 | */ 47 | 48 | 49 | #define S6MOVE 50 | 51 | #include "sislP.h" 52 | 53 | #if defined(SISLNEEDPROTOTYPES) 54 | void 55 | s6move(double epoint[]) 56 | #else 57 | void s6move(epoint) 58 | double epoint[]; 59 | #endif 60 | { 61 | printf("\n s6move: %f %f %f ",epoint[0],epoint[1],epoint[2]); 62 | } 63 | -------------------------------------------------------------------------------- /src/sh6ishelp.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 1998, 2000-2007, 2010, 2011, 2012, 2013 SINTEF Digital, 3 | * Applied Mathematics, Norway. 4 | * 5 | * Contact information: E-mail: tor.dokken@sintef.no 6 | * SINTEF Digital, Department of Mathematics and Cybernetics, 7 | * P.O. Box 124 Blindern, 8 | * 0314 Oslo, Norway. 9 | * 10 | * This file is part of SISL. 11 | * 12 | * SISL is free software: you can redistribute it and/or modify 13 | * it under the terms of the GNU Affero General Public License as 14 | * published by the Free Software Foundation, either version 3 of the 15 | * License, or (at your option) any later version. 16 | * 17 | * SISL is distributed in the hope that it will be useful, 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | * GNU Affero General Public License for more details. 21 | * 22 | * You should have received a copy of the GNU Affero General Public 23 | * License along with SISL. If not, see 24 | * . 25 | * 26 | * In accordance with Section 7(b) of the GNU Affero General Public 27 | * License, a covered work must retain the producer line in every data 28 | * file that is created or manipulated using SISL. 29 | * 30 | * Other Usage 31 | * You can be released from the requirements of the license by purchasing 32 | * a commercial license. Buying such a license is mandatory as soon as you 33 | * develop commercial activities involving the SISL library without 34 | * disclosing the source code of your own applications. 35 | * 36 | * This file may be used in accordance with the terms contained in a 37 | * written agreement between you and SINTEF Digital. 38 | */ 39 | 40 | #include "sisl-copyright.h" 41 | 42 | /* 43 | * 44 | * $Id: sh6ishelp.c,v 1.2 2001-03-19 16:06:03 afr Exp $ 45 | * 46 | */ 47 | 48 | 49 | #define SH6ISHELP 50 | 51 | #include "sislP.h" 52 | 53 | #if defined(SISLNEEDPROTOTYPES) 54 | int 55 | sh6ishelp(SISLIntpt *pt) 56 | #else 57 | int sh6ishelp(pt) 58 | SISLIntpt *pt; 59 | #endif 60 | /* 61 | ********************************************************************* 62 | * 63 | ********************************************************************* 64 | * 65 | * PURPOSE : Boolean. Is pt a help point? 66 | * 67 | * 68 | * INPUT : pt - Pointer to the Intpt. 69 | * 70 | * 71 | * 72 | * METHOD : 73 | * 74 | * 75 | * REFERENCES : 76 | * 77 | * WRITTEN BY : Michael Floater, SI, Oslo, Norway. June 91. 78 | * 79 | ********************************************************************* 80 | */ 81 | { 82 | int flag = 0; 83 | 84 | if(pt != SISL_NULL && pt->iinter < 0) flag = 1; 85 | 86 | 87 | goto out; 88 | 89 | 90 | 91 | out : 92 | return flag; 93 | } 94 | 95 | 96 | 97 | 98 | 99 | 100 | -------------------------------------------------------------------------------- /src/sh6ismain.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 1998, 2000-2007, 2010, 2011, 2012, 2013 SINTEF Digital, 3 | * Applied Mathematics, Norway. 4 | * 5 | * Contact information: E-mail: tor.dokken@sintef.no 6 | * SINTEF Digital, Department of Mathematics and Cybernetics, 7 | * P.O. Box 124 Blindern, 8 | * 0314 Oslo, Norway. 9 | * 10 | * This file is part of SISL. 11 | * 12 | * SISL is free software: you can redistribute it and/or modify 13 | * it under the terms of the GNU Affero General Public License as 14 | * published by the Free Software Foundation, either version 3 of the 15 | * License, or (at your option) any later version. 16 | * 17 | * SISL is distributed in the hope that it will be useful, 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | * GNU Affero General Public License for more details. 21 | * 22 | * You should have received a copy of the GNU Affero General Public 23 | * License along with SISL. If not, see 24 | * . 25 | * 26 | * In accordance with Section 7(b) of the GNU Affero General Public 27 | * License, a covered work must retain the producer line in every data 28 | * file that is created or manipulated using SISL. 29 | * 30 | * Other Usage 31 | * You can be released from the requirements of the license by purchasing 32 | * a commercial license. Buying such a license is mandatory as soon as you 33 | * develop commercial activities involving the SISL library without 34 | * disclosing the source code of your own applications. 35 | * 36 | * This file may be used in accordance with the terms contained in a 37 | * written agreement between you and SINTEF Digital. 38 | */ 39 | 40 | #include "sisl-copyright.h" 41 | 42 | /* 43 | * 44 | * $Id: sh6ismain.c,v 1.2 2001-03-19 16:06:03 afr Exp $ 45 | * 46 | */ 47 | 48 | 49 | #define SH6ISMAIN 50 | 51 | #include "sislP.h" 52 | 53 | #if defined(SISLNEEDPROTOTYPES) 54 | int 55 | sh6ismain(SISLIntpt *pt) 56 | #else 57 | int sh6ismain(pt) 58 | SISLIntpt *pt; 59 | #endif 60 | /* 61 | ********************************************************************* 62 | * 63 | ********************************************************************* 64 | * 65 | * PURPOSE : Boolean. Is pt a main point? 66 | * 67 | * 68 | * INPUT : pt - Pointer to the Intpt. 69 | * 70 | * 71 | * 72 | * METHOD : 73 | * 74 | * 75 | * REFERENCES : 76 | * 77 | * WRITTEN BY : Michael Floater, SI, Oslo, Norway. June 91. 78 | * 79 | ********************************************************************* 80 | */ 81 | { 82 | int flag = 0; 83 | 84 | if(pt != SISL_NULL && pt->iinter > 0) flag = 1; 85 | 86 | 87 | goto out; 88 | 89 | 90 | 91 | out : 92 | return flag; 93 | } 94 | 95 | 96 | 97 | 98 | 99 | 100 | -------------------------------------------------------------------------------- /src/shape.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SINTEF-Geometry/SISL/c9405f5e9a6fd591538094b07d5ba53b7a2d5f3e/src/shape.c -------------------------------------------------------------------------------- /viewer/include/jonvec.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SINTEF-Geometry/SISL/c9405f5e9a6fd591538094b07d5ba53b7a2d5f3e/viewer/include/jonvec.h -------------------------------------------------------------------------------- /viewer/include/mouse.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 1998, 2000-2007, 2010, 2011, 2012, 2013 SINTEF Digital, 3 | * Applied Mathematics, Norway. 4 | * 5 | * Contact information: E-mail: tor.dokken@sintef.no 6 | * SINTEF Digital, Department of Mathematics and Cybernetics, 7 | * P.O. Box 124 Blindern, 8 | * 0314 Oslo, Norway. 9 | * 10 | * This file is part of SISL. 11 | * 12 | * SISL is free software: you can redistribute it and/or modify 13 | * it under the terms of the GNU Affero General Public License as 14 | * published by the Free Software Foundation, either version 3 of the 15 | * License, or (at your option) any later version. 16 | * 17 | * SISL is distributed in the hope that it will be useful, 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | * GNU Affero General Public License for more details. 21 | * 22 | * You should have received a copy of the GNU Affero General Public 23 | * License along with SISL. If not, see 24 | * . 25 | * 26 | * In accordance with Section 7(b) of the GNU Affero General Public 27 | * License, a covered work must retain the producer line in every data 28 | * file that is created or manipulated using SISL. 29 | * 30 | * Other Usage 31 | * You can be released from the requirements of the license by purchasing 32 | * a commercial license. Buying such a license is mandatory as soon as you 33 | * develop commercial activities involving the SISL library without 34 | * disclosing the source code of your own applications. 35 | * 36 | * This file may be used in accordance with the terms contained in a 37 | * written agreement between you and SINTEF Digital. 38 | */ 39 | 40 | #ifndef MOUSE_H_INCLUDED 41 | 42 | 43 | // 44 | // 990831: See the C-file for comments. 45 | // 46 | extern GLboolean allow_zrot; 47 | extern int last_x, last_y, last_x0, last_y0; 48 | extern bool mouse_movement; // 021203: Adopted from old (?) version. 49 | 50 | 51 | int transversal_rotation(int x, int y, int last_xx, int last_yy); 52 | void MouseRotate(int x, int y); 53 | void MouseZoom(int x, int y); 54 | void MouseTranslate(int x, int y); 55 | void Mouse(int butt, int state, int x, int y); 56 | 57 | 58 | 59 | 60 | 61 | 62 | #define MOUSE_H_INCLUDED 63 | #endif 64 | -------------------------------------------------------------------------------- /viewer/include/sisl_aux.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 1998, 2000-2007, 2010, 2011, 2012, 2013 SINTEF Digital, 3 | * Applied Mathematics, Norway. 4 | * 5 | * Contact information: E-mail: tor.dokken@sintef.no 6 | * SINTEF Digital, Department of Mathematics and Cybernetics, 7 | * P.O. Box 124 Blindern, 8 | * 0314 Oslo, Norway. 9 | * 10 | * This file is part of SISL. 11 | * 12 | * SISL is free software: you can redistribute it and/or modify 13 | * it under the terms of the GNU Affero General Public License as 14 | * published by the Free Software Foundation, either version 3 of the 15 | * License, or (at your option) any later version. 16 | * 17 | * SISL is distributed in the hope that it will be useful, 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | * GNU Affero General Public License for more details. 21 | * 22 | * You should have received a copy of the GNU Affero General Public 23 | * License along with SISL. If not, see 24 | * . 25 | * 26 | * In accordance with Section 7(b) of the GNU Affero General Public 27 | * License, a covered work must retain the producer line in every data 28 | * file that is created or manipulated using SISL. 29 | * 30 | * Other Usage 31 | * You can be released from the requirements of the license by purchasing 32 | * a commercial license. Buying such a license is mandatory as soon as you 33 | * develop commercial activities involving the SISL library without 34 | * disclosing the source code of your own applications. 35 | * 36 | * This file may be used in accordance with the terms contained in a 37 | * written agreement between you and SINTEF Digital. 38 | */ 39 | 40 | #ifndef SISL_AUX_H_INCLUDED 41 | 42 | 43 | #include "sisl.h" 44 | #include "sislP.h" 45 | //#include "jonvec.h" 46 | 47 | void lower_degree_to_linear(SISLSurf **srf, double e); 48 | 49 | void lower_degree_and_subdivide(SISLSurf **srf, int new_knots_per_interval, 50 | int max_number_of_knots); 51 | 52 | void compute_surface_normals(SISLSurf *srf, double **ngrid); 53 | 54 | 55 | 56 | 57 | 58 | 59 | #define SISL_AUX_H_INCLUDED 60 | #endif 61 | -------------------------------------------------------------------------------- /viewer/include/transfutils.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 1998, 2000-2007, 2010, 2011, 2012, 2013 SINTEF Digital, 3 | * Applied Mathematics, Norway. 4 | * 5 | * Contact information: E-mail: tor.dokken@sintef.no 6 | * SINTEF Digital, Department of Mathematics and Cybernetics, 7 | * P.O. Box 124 Blindern, 8 | * 0314 Oslo, Norway. 9 | * 10 | * This file is part of SISL. 11 | * 12 | * SISL is free software: you can redistribute it and/or modify 13 | * it under the terms of the GNU Affero General Public License as 14 | * published by the Free Software Foundation, either version 3 of the 15 | * License, or (at your option) any later version. 16 | * 17 | * SISL is distributed in the hope that it will be useful, 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20 | * GNU Affero General Public License for more details. 21 | * 22 | * You should have received a copy of the GNU Affero General Public 23 | * License along with SISL. If not, see 24 | * . 25 | * 26 | * In accordance with Section 7(b) of the GNU Affero General Public 27 | * License, a covered work must retain the producer line in every data 28 | * file that is created or manipulated using SISL. 29 | * 30 | * Other Usage 31 | * You can be released from the requirements of the license by purchasing 32 | * a commercial license. Buying such a license is mandatory as soon as you 33 | * develop commercial activities involving the SISL library without 34 | * disclosing the source code of your own applications. 35 | * 36 | * This file may be used in accordance with the terms contained in a 37 | * written agreement between you and SINTEF Digital. 38 | */ 39 | 40 | #ifndef TRANSFUTILS_H_INCLUDED 41 | 42 | // 43 | // 990831: See the C-file for comments. 44 | // 45 | extern double xtrans, ytrans, ztrans, xrot_eps, yrot_eps, zrot_eps; 46 | extern double xscale, yscale, zscale; 47 | extern double xrot, yrot, zrot; 48 | 49 | 50 | 51 | 52 | 53 | 54 | void rotate(double y_ang, double x_ang, double z_ang); 55 | void translate(double x, double y, double z); 56 | void scale(double x, double y, double z); 57 | 58 | 59 | 60 | 61 | 62 | 63 | #define TRANSFUTILS_H_INCLUDED 64 | #endif 65 | -------------------------------------------------------------------------------- /viewer/src/mouse.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SINTEF-Geometry/SISL/c9405f5e9a6fd591538094b07d5ba53b7a2d5f3e/viewer/src/mouse.cpp --------------------------------------------------------------------------------