delaunay.html 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
  5. <head>
  6. <title>Delaunay module documentation</title>
  7. <link rel="stylesheet" href="../ldoc.css" type="text/css" />
  8. </head>
  9. <body>
  10. <div id="container">
  11. <div id="product">
  12. <div id="product_logo"></div>
  13. <div id="product_name"><big><b></b></big></div>
  14. <div id="product_description"></div>
  15. </div> <!-- id="product" -->
  16. <div id="main">
  17. <!-- Menu -->
  18. <div id="navigation">
  19. <br/>
  20. <h1>Delaunay (v0.1)</h1>
  21. <h2>Contents</h2>
  22. <ul>
  23. <li><a href="#Class_Edge">Class Edge </a></li>
  24. <li><a href="#Class_Point">Class Point </a></li>
  25. <li><a href="#Class_Triangle">Class Triangle </a></li>
  26. <li><a href="#Delaunay_module">Delaunay module </a></li>
  27. </ul>
  28. <h2>Scripts</h2>
  29. <ul class="nowrap">
  30. <li><strong>delaunay</strong></li>
  31. </ul>
  32. </div>
  33. <div id="content">
  34. <h1>Script <code>delaunay</code></h1>
  35. <p>
  36. <h2>Delaunay, Lua module for convex polygon triangulation</h2>
  37. </p>
  38. <p>
  39. </p>
  40. <h3>Info:</h3>
  41. <ul>
  42. <li><strong>Copyright</strong>: 2013</li>
  43. <li><strong>License</strong>: MIT</li>
  44. <li><strong>Author</strong>: Roland Yonaba</li>
  45. </ul>
  46. <h2><a href="#Class_Edge">Class Edge </a></h2>
  47. <table class="function_list">
  48. <tr>
  49. <td class="name" nowrap><a href="#Edge:new">Edge:new (p1, p2)</a></td>
  50. <td class="summary">Creates a new <a href="../index.html#Class_Edge">Edge</a> </td>
  51. </tr>
  52. <tr>
  53. <td class="name" nowrap><a href="#Edge:same">Edge:same (otherEdge)</a></td>
  54. <td class="summary">Test if <code>otherEdge</code> is similar to self.</td>
  55. </tr>
  56. <tr>
  57. <td class="name" nowrap><a href="#Edge:length">Edge:length ()</a></td>
  58. <td class="summary">Returns the length.</td>
  59. </tr>
  60. <tr>
  61. <td class="name" nowrap><a href="#Edge:getMidPoint">Edge:getMidPoint ()</a></td>
  62. <td class="summary">Returns the midpoint coordinates.</td>
  63. </tr>
  64. </table>
  65. <h2><a href="#Class_Point">Class Point </a></h2>
  66. <table class="function_list">
  67. <tr>
  68. <td class="name" nowrap><a href="#Point:new">Point:new (x, y)</a></td>
  69. <td class="summary">Creates a new <a href="../index.html#Class_Point">Point</a> </td>
  70. </tr>
  71. <tr>
  72. <td class="name" nowrap><a href="#Point:dist2">Point:dist2 (p)</a></td>
  73. <td class="summary">Returns the square distance to another <a href="../index.html#Class_Point">Point</a> .</td>
  74. </tr>
  75. <tr>
  76. <td class="name" nowrap><a href="#Point:dist">Point:dist (p)</a></td>
  77. <td class="summary">Returns the distance to another <a href="../index.html#Class_Point">Point</a> .</td>
  78. </tr>
  79. <tr>
  80. <td class="name" nowrap><a href="#Point:isInCircle">Point:isInCircle (cx, cy, r)</a></td>
  81. <td class="summary">Checks if self lies into the bounds of a circle</td>
  82. </tr>
  83. </table>
  84. <h2><a href="#Class_Triangle">Class Triangle </a></h2>
  85. <table class="function_list">
  86. <tr>
  87. <td class="name" nowrap><a href="#Triangle:new">Triangle:new (p1, p2, p3)</a></td>
  88. <td class="summary">Creates a new <a href="../index.html#Class_Triangle">Triangle</a> </td>
  89. </tr>
  90. <tr>
  91. <td class="name" nowrap><a href="#Triangle:isCW">Triangle:isCW ()</a></td>
  92. <td class="summary">Checks if the triangle is defined clockwise (sequence p1-p2-p3)</td>
  93. </tr>
  94. <tr>
  95. <td class="name" nowrap><a href="#Triangle:isCCW">Triangle:isCCW ()</a></td>
  96. <td class="summary">Checks if the triangle is defined counter-clockwise (sequence p1-p2-p3)</td>
  97. </tr>
  98. <tr>
  99. <td class="name" nowrap><a href="#Triangle:getSidesLength">Triangle:getSidesLength ()</a></td>
  100. <td class="summary">Returns the length of the edges</td>
  101. </tr>
  102. <tr>
  103. <td class="name" nowrap><a href="#Triangle:getCenter">Triangle:getCenter ()</a></td>
  104. <td class="summary">Returns the coordinates of the center</td>
  105. </tr>
  106. <tr>
  107. <td class="name" nowrap><a href="#Triangle:getCircumCircle">Triangle:getCircumCircle ()</a></td>
  108. <td class="summary">Returns the coordinates of the circumcircle center and its radius</td>
  109. </tr>
  110. <tr>
  111. <td class="name" nowrap><a href="#Triangle:getCircumCenter">Triangle:getCircumCenter ()</a></td>
  112. <td class="summary">Returns the coordinates of the circumcircle center</td>
  113. </tr>
  114. <tr>
  115. <td class="name" nowrap><a href="#Triangle:getCircumRadius">Triangle:getCircumRadius ()</a></td>
  116. <td class="summary">Returns the radius of the circumcircle</td>
  117. </tr>
  118. <tr>
  119. <td class="name" nowrap><a href="#Triangle:getArea">Triangle:getArea ()</a></td>
  120. <td class="summary">Returns the area</td>
  121. </tr>
  122. <tr>
  123. <td class="name" nowrap><a href="#Triangle:inCircumCircle">Triangle:inCircumCircle (p)</a></td>
  124. <td class="summary">Checks if a given point lies into the triangle circumcircle</td>
  125. </tr>
  126. </table>
  127. <h2><a href="#Delaunay_module">Delaunay module </a></h2>
  128. <table class="function_list">
  129. <tr>
  130. <td class="name" nowrap><a href="#Delaunay">Delaunay</a></td>
  131. <td class="summary">Delaunay module</td>
  132. </tr>
  133. <tr>
  134. <td class="name" nowrap><a href="#Delaunay.triangulate">Delaunay.triangulate (...)</a></td>
  135. <td class="summary">Triangulates a set of given vertices</td>
  136. </tr>
  137. </table>
  138. <br/>
  139. <br/>
  140. <h2><a name="Class_Edge"></a>Class Edge </h2>
  141. <dl class="function">
  142. <dt>
  143. <a name = "Edge:new"></a>
  144. <strong>Edge:new (p1, p2)</strong>
  145. </dt>
  146. <dd>
  147. Creates a new <a href="../index.html#Class_Edge">Edge</a>
  148. <h3>Parameters:</h3>
  149. <ul>
  150. <li><span class="parameter">p1</span>
  151. a <a href="../index.html#Class_Point">Point</a>
  152. </li>
  153. <li><span class="parameter">p2</span>
  154. a <a href="../index.html#Class_Point">Point</a>
  155. </li>
  156. </ul>
  157. <h3>Returns:</h3>
  158. <ol>
  159. a new <a href="../index.html#Class_Edge">Edge</a>
  160. </ol>
  161. <h3>Usage:</h3>
  162. <ul>
  163. <pre class="example">
  164. <span class="keyword">local</span> Delaunay = <span class="global">require</span> <span class="string">'Delaunay'</span>
  165. <span class="keyword">local</span> Edge = Delaunay.Edge
  166. <span class="keyword">local</span> Point = Delaunay.Point
  167. <span class="keyword">local</span> e = Edge:new(Point(<span class="number">1</span>,<span class="number">1</span>), Point(<span class="number">2</span>,<span class="number">5</span>))
  168. <span class="keyword">local</span> e = Edge(Point(<span class="number">1</span>,<span class="number">1</span>), Point(<span class="number">2</span>,<span class="number">5</span>)) <span class="comment">-- Alias to Edge.new
  169. </span> <span class="global">print</span>(e) <span class="comment">-- print the edge members p1 and p2
  170. </span></pre>
  171. </ul>
  172. </dd>
  173. <dt>
  174. <a name = "Edge:same"></a>
  175. <strong>Edge:same (otherEdge)</strong>
  176. </dt>
  177. <dd>
  178. Test if <code>otherEdge</code> is similar to self. It does not take into account the direction.
  179. <h3>Parameters:</h3>
  180. <ul>
  181. <li><span class="parameter">otherEdge</span>
  182. an <a href="../index.html#Class_Edge">Edge</a>
  183. </li>
  184. </ul>
  185. <h3>Returns:</h3>
  186. <ol>
  187. <code>true</code> or <code>false</code>
  188. </ol>
  189. <h3>Usage:</h3>
  190. <ul>
  191. <pre class="example">
  192. <span class="keyword">local</span> e1 = Edge(Point(<span class="number">1</span>,<span class="number">1</span>), Point(<span class="number">2</span>,<span class="number">5</span>))
  193. <span class="keyword">local</span> e2 = Edge(Point(<span class="number">2</span>,<span class="number">5</span>), Point(<span class="number">1</span>,<span class="number">1</span>))
  194. <span class="global">print</span>(e1:same(e2)) <span class="comment">--&gt; true
  195. </span> <span class="global">print</span>(e1 == e2)) <span class="comment">--&gt; false, == operator considers the direction
  196. </span></pre>
  197. </ul>
  198. </dd>
  199. <dt>
  200. <a name = "Edge:length"></a>
  201. <strong>Edge:length ()</strong>
  202. </dt>
  203. <dd>
  204. Returns the length.
  205. <h3>Returns:</h3>
  206. <ol>
  207. the length of self
  208. </ol>
  209. <h3>Usage:</h3>
  210. <ul>
  211. <pre class="example">
  212. <span class="keyword">local</span> e = Edge(Point(), Point(<span class="number">10</span>,<span class="number">0</span>))
  213. <span class="global">print</span>(e:length()) <span class="comment">--&gt; 10
  214. </span></pre>
  215. </ul>
  216. </dd>
  217. <dt>
  218. <a name = "Edge:getMidPoint"></a>
  219. <strong>Edge:getMidPoint ()</strong>
  220. </dt>
  221. <dd>
  222. Returns the midpoint coordinates.
  223. <h3>Returns:</h3>
  224. <ol>
  225. <li>
  226. the x-coordinate of self midpoint</li>
  227. <li>
  228. the y-coordinate of self midpoint</li>
  229. </ol>
  230. <h3>Usage:</h3>
  231. <ul>
  232. <pre class="example">
  233. <span class="keyword">local</span> e = Edge(Point(), Point(<span class="number">10</span>,<span class="number">0</span>))
  234. <span class="global">print</span>(e:getMidPoint()) <span class="comment">--&gt; 5, 0
  235. </span></pre>
  236. </ul>
  237. </dd>
  238. </dl>
  239. <h2><a name="Class_Point"></a>Class Point </h2>
  240. <dl class="function">
  241. <dt>
  242. <a name = "Point:new"></a>
  243. <strong>Point:new (x, y)</strong>
  244. </dt>
  245. <dd>
  246. Creates a new <a href="../index.html#Class_Point">Point</a>
  247. <h3>Parameters:</h3>
  248. <ul>
  249. <li><span class="parameter">x</span>
  250. the x-coordinate
  251. </li>
  252. <li><span class="parameter">y</span>
  253. the y-coordinate
  254. </li>
  255. </ul>
  256. <h3>Returns:</h3>
  257. <ol>
  258. a new <a href="../index.html#Class_Point">Point</a>
  259. </ol>
  260. <h3>Usage:</h3>
  261. <ul>
  262. <pre class="example">
  263. <span class="keyword">local</span> Delaunay = <span class="global">require</span> <span class="string">'Delaunay'</span>
  264. <span class="keyword">local</span> Point = Delaunay.Point
  265. <span class="keyword">local</span> p = Point:new(<span class="number">1</span>,<span class="number">1</span>)
  266. <span class="keyword">local</span> p = Point(<span class="number">1</span>,<span class="number">1</span>) <span class="comment">-- Alias to Point.new
  267. </span> <span class="global">print</span>(p) <span class="comment">-- print the point members x and y
  268. </span></pre>
  269. </ul>
  270. </dd>
  271. <dt>
  272. <a name = "Point:dist2"></a>
  273. <strong>Point:dist2 (p)</strong>
  274. </dt>
  275. <dd>
  276. Returns the square distance to another <a href="../index.html#Class_Point">Point</a> .
  277. <h3>Parameters:</h3>
  278. <ul>
  279. <li><span class="parameter">p</span>
  280. a <a href="../index.html#Class_Point">Point</a>
  281. </li>
  282. </ul>
  283. <h3>Returns:</h3>
  284. <ol>
  285. the square distance from self to <code>p</code>.
  286. </ol>
  287. <h3>Usage:</h3>
  288. <ul>
  289. <pre class="example">
  290. <span class="keyword">local</span> p1, p2 = Point(), Point(<span class="number">1</span>,<span class="number">1</span>)
  291. <span class="global">print</span>(p1:dist2(p2)) <span class="comment">--&gt; 2
  292. </span></pre>
  293. </ul>
  294. </dd>
  295. <dt>
  296. <a name = "Point:dist"></a>
  297. <strong>Point:dist (p)</strong>
  298. </dt>
  299. <dd>
  300. Returns the distance to another <a href="../index.html#Class_Point">Point</a> .
  301. <h3>Parameters:</h3>
  302. <ul>
  303. <li><span class="parameter">p</span>
  304. a <a href="../index.html#Class_Point">Point</a>
  305. </li>
  306. </ul>
  307. <h3>Returns:</h3>
  308. <ol>
  309. the distance from self to <code>p</code>.
  310. </ol>
  311. <h3>Usage:</h3>
  312. <ul>
  313. <pre class="example">
  314. <span class="keyword">local</span> p1, p2 = Point(), Point(<span class="number">1</span>,<span class="number">1</span>)
  315. <span class="global">print</span>(p1:dist2(p2)) <span class="comment">--&gt; 1.4142135623731
  316. </span></pre>
  317. </ul>
  318. </dd>
  319. <dt>
  320. <a name = "Point:isInCircle"></a>
  321. <strong>Point:isInCircle (cx, cy, r)</strong>
  322. </dt>
  323. <dd>
  324. Checks if self lies into the bounds of a circle
  325. <h3>Parameters:</h3>
  326. <ul>
  327. <li><span class="parameter">cx</span>
  328. the x-coordinate of the circle center
  329. </li>
  330. <li><span class="parameter">cy</span>
  331. the y-coordinate of the circle center
  332. </li>
  333. <li><span class="parameter">r</span>
  334. the radius of the circle
  335. </li>
  336. </ul>
  337. <h3>Returns:</h3>
  338. <ol>
  339. <code>true</code> or <code>false</code>
  340. </ol>
  341. <h3>Usage:</h3>
  342. <ul>
  343. <pre class="example">
  344. <span class="keyword">local</span> p = Point()
  345. <span class="global">print</span>(p:isInCircle(<span class="number">0</span>,<span class="number">0</span>,<span class="number">1</span>)) <span class="comment">--&gt; true
  346. </span></pre>
  347. </ul>
  348. </dd>
  349. </dl>
  350. <h2><a name="Class_Triangle"></a>Class Triangle </h2>
  351. <dl class="function">
  352. <dt>
  353. <a name = "Triangle:new"></a>
  354. <strong>Triangle:new (p1, p2, p3)</strong>
  355. </dt>
  356. <dd>
  357. Creates a new <a href="../index.html#Class_Triangle">Triangle</a>
  358. <h3>Parameters:</h3>
  359. <ul>
  360. <li><span class="parameter">p1</span>
  361. a <a href="../index.html#Class_Point">Point</a>
  362. </li>
  363. <li><span class="parameter">p2</span>
  364. a <a href="../index.html#Class_Point">Point</a>
  365. </li>
  366. <li><span class="parameter">p3</span>
  367. a <a href="../index.html#Class_Point">Point</a>
  368. </li>
  369. </ul>
  370. <h3>Returns:</h3>
  371. <ol>
  372. a new <a href="../index.html#Class_Triangle">Triangle</a>
  373. </ol>
  374. <h3>Usage:</h3>
  375. <ul>
  376. <pre class="example">
  377. <span class="keyword">local</span> Delaunay = <span class="global">require</span> <span class="string">'Delaunay'</span>
  378. <span class="keyword">local</span> Triangle = Delaunay.Triangle
  379. <span class="keyword">local</span> p1, p2, p3 = Point(), Point(<span class="number">2</span>,<span class="number">0</span>), Point(<span class="number">1</span>,<span class="number">1</span>)
  380. <span class="keyword">local</span> t = Triangle:new(p1, p2, p3)
  381. <span class="keyword">local</span> t = Triangle(p1, p2, p3) <span class="comment">-- Alias to Triangle.new
  382. </span> <span class="global">print</span>(t) <span class="comment">-- print the triangle members p1, p2 and p3
  383. </span></pre>
  384. </ul>
  385. </dd>
  386. <dt>
  387. <a name = "Triangle:isCW"></a>
  388. <strong>Triangle:isCW ()</strong>
  389. </dt>
  390. <dd>
  391. Checks if the triangle is defined clockwise (sequence p1-p2-p3)
  392. <h3>Returns:</h3>
  393. <ol>
  394. <code>true</code> or <code>false</code>
  395. </ol>
  396. <h3>Usage:</h3>
  397. <ul>
  398. <pre class="example">
  399. <span class="keyword">local</span> p1, p2, p3 = Point(), Point(<span class="number">1</span>,<span class="number">1</span>), Point(<span class="number">2</span>,<span class="number">0</span>)
  400. <span class="keyword">local</span> t = Triangle(p1, p2, p3)
  401. <span class="global">print</span>(t:isCW()) <span class="comment">--&gt; true
  402. </span></pre>
  403. </ul>
  404. </dd>
  405. <dt>
  406. <a name = "Triangle:isCCW"></a>
  407. <strong>Triangle:isCCW ()</strong>
  408. </dt>
  409. <dd>
  410. Checks if the triangle is defined counter-clockwise (sequence p1-p2-p3)
  411. <h3>Returns:</h3>
  412. <ol>
  413. <code>true</code> or <code>false</code>
  414. </ol>
  415. <h3>Usage:</h3>
  416. <ul>
  417. <pre class="example">
  418. <span class="keyword">local</span> p1, p2, p3 = Point(), Point(<span class="number">2</span>,<span class="number">0</span>), Point(<span class="number">1</span>,<span class="number">1</span>)
  419. <span class="keyword">local</span> t = Triangle(p1, p2, p3)
  420. <span class="global">print</span>(t:isCCW()) <span class="comment">--&gt; true
  421. </span></pre>
  422. </ul>
  423. </dd>
  424. <dt>
  425. <a name = "Triangle:getSidesLength"></a>
  426. <strong>Triangle:getSidesLength ()</strong>
  427. </dt>
  428. <dd>
  429. Returns the length of the edges
  430. <h3>Returns:</h3>
  431. <ol>
  432. <li>
  433. the length of the edge p1-p2</li>
  434. <li>
  435. the length of the edge p2-p3</li>
  436. <li>
  437. the length of the edge p3-p1</li>
  438. </ol>
  439. <h3>Usage:</h3>
  440. <ul>
  441. <pre class="example">
  442. <span class="keyword">local</span> p1, p2, p3 = Point(), Point(<span class="number">2</span>,<span class="number">0</span>), Point(<span class="number">1</span>,<span class="number">1</span>)
  443. <span class="keyword">local</span> t = Triangle(p1, p2, p3)
  444. <span class="global">print</span>(t:getSidesLength()) <span class="comment">--&gt; 2 1.4142135623731 1.4142135623731
  445. </span></pre>
  446. </ul>
  447. </dd>
  448. <dt>
  449. <a name = "Triangle:getCenter"></a>
  450. <strong>Triangle:getCenter ()</strong>
  451. </dt>
  452. <dd>
  453. Returns the coordinates of the center
  454. <h3>Returns:</h3>
  455. <ol>
  456. <li>
  457. the x-coordinate of the center</li>
  458. <li>
  459. the y-coordinate of the center</li>
  460. </ol>
  461. <h3>Usage:</h3>
  462. <ul>
  463. <pre class="example">
  464. <span class="keyword">local</span> p1, p2, p3 = Point(), Point(<span class="number">2</span>,<span class="number">0</span>), Point(<span class="number">1</span>,<span class="number">1</span>)
  465. <span class="keyword">local</span> t = Triangle(p1, p2, p3)
  466. <span class="global">print</span>(t:getCenter()) <span class="comment">--&gt; 1 0.33333333333333
  467. </span></pre>
  468. </ul>
  469. </dd>
  470. <dt>
  471. <a name = "Triangle:getCircumCircle"></a>
  472. <strong>Triangle:getCircumCircle ()</strong>
  473. </dt>
  474. <dd>
  475. Returns the coordinates of the circumcircle center and its radius
  476. <h3>Returns:</h3>
  477. <ol>
  478. <li>
  479. the x-coordinate of the circumcircle center</li>
  480. <li>
  481. the y-coordinate of the circumcircle center</li>
  482. <li>
  483. the radius of the circumcircle</li>
  484. </ol>
  485. <h3>Usage:</h3>
  486. <ul>
  487. <pre class="example">
  488. <span class="keyword">local</span> p1, p2, p3 = Point(), Point(<span class="number">2</span>,<span class="number">0</span>), Point(<span class="number">1</span>,<span class="number">1</span>)
  489. <span class="keyword">local</span> t = Triangle(p1, p2, p3)
  490. <span class="global">print</span>(t:getCircumCircle()) <span class="comment">--&gt; 1 0 1
  491. </span></pre>
  492. </ul>
  493. </dd>
  494. <dt>
  495. <a name = "Triangle:getCircumCenter"></a>
  496. <strong>Triangle:getCircumCenter ()</strong>
  497. </dt>
  498. <dd>
  499. Returns the coordinates of the circumcircle center
  500. <h3>Returns:</h3>
  501. <ol>
  502. <li>
  503. the x-coordinate of the circumcircle center</li>
  504. <li>
  505. the y-coordinate of the circumcircle center</li>
  506. </ol>
  507. <h3>Usage:</h3>
  508. <ul>
  509. <pre class="example">
  510. <span class="keyword">local</span> p1, p2, p3 = Point(), Point(<span class="number">2</span>,<span class="number">0</span>), Point(<span class="number">1</span>,<span class="number">1</span>)
  511. <span class="keyword">local</span> t = Triangle(p1, p2, p3)
  512. <span class="global">print</span>(t:getCircumCenter()) <span class="comment">--&gt; 1 0
  513. </span></pre>
  514. </ul>
  515. </dd>
  516. <dt>
  517. <a name = "Triangle:getCircumRadius"></a>
  518. <strong>Triangle:getCircumRadius ()</strong>
  519. </dt>
  520. <dd>
  521. Returns the radius of the circumcircle
  522. <h3>Returns:</h3>
  523. <ol>
  524. the radius of the circumcircle
  525. </ol>
  526. <h3>Usage:</h3>
  527. <ul>
  528. <pre class="example">
  529. <span class="keyword">local</span> p1, p2, p3 = Point(), Point(<span class="number">2</span>,<span class="number">0</span>), Point(<span class="number">1</span>,<span class="number">1</span>)
  530. <span class="keyword">local</span> t = Triangle(p1, p2, p3)
  531. <span class="global">print</span>(t:getCircumRadius()) <span class="comment">--&gt; 1
  532. </span></pre>
  533. </ul>
  534. </dd>
  535. <dt>
  536. <a name = "Triangle:getArea"></a>
  537. <strong>Triangle:getArea ()</strong>
  538. </dt>
  539. <dd>
  540. Returns the area
  541. <h3>Returns:</h3>
  542. <ol>
  543. the area
  544. </ol>
  545. <h3>Usage:</h3>
  546. <ul>
  547. <pre class="example">
  548. <span class="keyword">local</span> p1, p2, p3 = Point(), Point(<span class="number">2</span>,<span class="number">0</span>), Point(<span class="number">1</span>,<span class="number">1</span>)
  549. <span class="keyword">local</span> t = Triangle(p1, p2, p3)
  550. <span class="global">print</span>(t:getArea()) <span class="comment">--&gt; 1
  551. </span></pre>
  552. </ul>
  553. </dd>
  554. <dt>
  555. <a name = "Triangle:inCircumCircle"></a>
  556. <strong>Triangle:inCircumCircle (p)</strong>
  557. </dt>
  558. <dd>
  559. Checks if a given point lies into the triangle circumcircle
  560. <h3>Parameters:</h3>
  561. <ul>
  562. <li><span class="parameter">p</span>
  563. a <a href="../index.html#Class_Point">Point</a>
  564. </li>
  565. </ul>
  566. <h3>Returns:</h3>
  567. <ol>
  568. <code>true</code> or <code>false</code>
  569. </ol>
  570. <h3>Usage:</h3>
  571. <ul>
  572. <pre class="example">
  573. <span class="keyword">local</span> p1, p2, p3 = Point(), Point(<span class="number">2</span>,<span class="number">0</span>), Point(<span class="number">1</span>,<span class="number">1</span>)
  574. <span class="keyword">local</span> t = Triangle(p1, p2, p3)
  575. <span class="global">print</span>(t:inCircumCircle(Point(<span class="number">1</span>,-<span class="number">1</span>))) <span class="comment">--&gt; true
  576. </span></pre>
  577. </ul>
  578. </dd>
  579. </dl>
  580. <h2><a name="Delaunay_module"></a>Delaunay module </h2>
  581. <dl class="function">
  582. <dt>
  583. <a name = "Delaunay"></a>
  584. <strong>Delaunay</strong>
  585. </dt>
  586. <dd>
  587. Delaunay module
  588. <h3>Fields:</h3>
  589. <ul>
  590. <li><span class="parameter">Point</span>
  591. reference to the <a href="../index.html#Class_Point">Point</a> class
  592. </li>
  593. <li><span class="parameter">Edge</span>
  594. reference to the <a href="../index.html#Class_Edge">Edge</a> class
  595. </li>
  596. <li><span class="parameter">Triangle</span>
  597. reference to the <a href="../index.html#Class_Triangle">Triangle</a> class
  598. </li>
  599. <li><span class="parameter">_VERSION</span>
  600. the version of the current module
  601. </li>
  602. </ul>
  603. </dd>
  604. <dt>
  605. <a name = "Delaunay.triangulate"></a>
  606. <strong>Delaunay.triangulate (...)</strong>
  607. </dt>
  608. <dd>
  609. Triangulates a set of given vertices
  610. <h3>Parameters:</h3>
  611. <ul>
  612. <li><span class="parameter">...</span>
  613. a <code>vargarg</code> list of objects of type <a href="../index.html#Class_Point">Point</a>
  614. </li>
  615. </ul>
  616. <h3>Returns:</h3>
  617. <ol>
  618. a set of objects of type <a href="../index.html#Class_Triangle">Triangle</a>
  619. </ol>
  620. <h3>Usage:</h3>
  621. <ul>
  622. <pre class="example">
  623. <span class="keyword">local</span> Delaunay = <span class="global">require</span> <span class="string">'Delaunay'</span>
  624. <span class="keyword">local</span> Point = Delaunay.Point
  625. <span class="keyword">local</span> p1, p2, p3, p4 = Point(), Point(<span class="number">2</span>,<span class="number">0</span>), Point(<span class="number">1</span>,<span class="number">1</span>), Point(<span class="number">1</span>,-<span class="number">1</span>)
  626. <span class="keyword">local</span> triangles = Delaunay.triangulate(p1, p2, p3, p4)
  627. <span class="keyword">for</span> i = <span class="number">1</span>, #triangles <span class="keyword">do</span>
  628. <span class="global">print</span>(triangles[i])
  629. <span class="keyword">end</span></pre>
  630. </ul>
  631. </dd>
  632. </dl>
  633. </div> <!-- id="content" -->
  634. </div> <!-- id="main" -->
  635. <div id="about">
  636. <i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.0</a></i>
  637. </div> <!-- id="about" -->
  638. </div> <!-- id="container" -->
  639. </body>
  640. </html>