{"id":306,"date":"2018-03-28T08:02:13","date_gmt":"2018-03-28T08:02:13","guid":{"rendered":"http:\/\/ifdesignelseart.com\/?p=306"},"modified":"2018-03-28T08:02:13","modified_gmt":"2018-03-28T08:02:13","slug":"determiner-si-un-point-se-trouve-inscrit-dans-un-triangle","status":"publish","type":"post","link":"https:\/\/ifdesignelseart.com\/?p=306","title":{"rendered":"D\u00e9terminer si un point se trouve inscrit dans un triangle"},"content":{"rendered":"<p>Pour d\u00e9terminer si un point est inscrit dans un triangle, nous cr\u00e9ons deux fonctions. L&rsquo;une permet de d\u00e9terminer le barycentre de trois points. La seconde fonction appellera la premi\u00e8re trois fois pour calculer le barycentre des coordonn\u00e9es du point recherch\u00e9 avec chaque paire de points des trois lignes du triangle :<\/p>\n<pre class=\"brush:java\">float barycentre (PVector p1, PVector p2, PVector p3)\r\n{\r\n    return (p1.x - p3.x) * (p2.y - p3.y) - (p2.x - p3.x) * (p1.y - p3.y);\r\n}\r\n\r\nboolean dansLeTriangle (PVector pt, PVector v1, PVector v2, PVector v3)\r\n{\r\n    boolean b1, b2, b3;\r\n\r\n    b1 = barycentre(pt, v1, v2) &lt; 0 ;\r\n    b2 = barycentre(pt, v2, v3) &lt; 0;\r\n    b3 = barycentre(pt, v3, v1) &lt; 0 ;\r\n\r\n    return ((b1 == b2) &amp;&amp; (b2 == b3));\r\n}\r\n\r\n<\/pre>\n<p>Un exemple de mise en \u0153uvre :<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-309\" src=\"http:\/\/ifdesignelseart.com\/wp-content\/uploads\/2018\/03\/triangles.png\" alt=\"\" width=\"600\" srcset=\"https:\/\/ifdesignelseart.com\/wp-content\/uploads\/2018\/03\/triangles.png 1000w, https:\/\/ifdesignelseart.com\/wp-content\/uploads\/2018\/03\/triangles-300x150.png 300w, https:\/\/ifdesignelseart.com\/wp-content\/uploads\/2018\/03\/triangles-768x384.png 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>Dans le programme qui suit, on v\u00e9rifie si la souris se trouve \u00e0 l&rsquo;int\u00e9rieur d&rsquo;un triangle ou non, le triangle est rempli en blanc si c&rsquo;est le cas, en noir sinon.<\/p>\n<pre class=\"brush:java\">PVector p1,p2,p3;\r\n\r\nvoid setup() {\r\n  size(500, 500);\r\n  p1 = new PVector(100, 100);\r\n  p2 = new PVector(400, 100);\r\n  p3 = new PVector(250, 400);\r\n}\r\n\r\nvoid draw() { \r\n  background(255);\r\n  if (dansLeTriangle(new PVector(mouseX, mouseY), p1, p2, p3)) { \r\n    stroke(0); \r\n    fill(255);\r\n  } else { \r\n    noStroke();\r\n    fill(0);\r\n  } \r\n  triangle(p1.x, p1.y, p2.x, p2.y, p3.x, p3.y);\r\n} \r\n\r\nfloat barycentre (PVector p1, PVector p2, PVector p3)\r\n{\r\n  return (p1.x - p3.x) * (p2.y - p3.y) - (p2.x - p3.x) * (p1.y - p3.y);\r\n}\r\n\r\nboolean dansLeTriangle (PVector pt, PVector v1, PVector v2, PVector v3)\r\n{\r\n  boolean b1, b2, b3;\r\n\r\n  b1 = barycentre(pt, v1, v2) &lt;   0;\r\n  b2 = barycentre(pt, v2, v3) &lt;   0;\r\n  b3 = barycentre(pt, v3, v1) &lt;   0;\r\n\r\n  return ((b1 == b2)  &amp;&amp;  (b2 == b3));\r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Pour d\u00e9terminer si un point est inscrit dans un triangle, nous cr\u00e9ons deux fonctions. L&rsquo;une permet de d\u00e9terminer le barycentre de trois points. La seconde fonction appellera la premi\u00e8re trois fois pour calculer le barycentre des coordonn\u00e9es du point recherch\u00e9 avec chaque paire de points des trois lignes du triangle : float barycentre (PVector p1, [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-306","post","type-post","status-publish","format-standard","hentry","category-non-classe"],"_links":{"self":[{"href":"https:\/\/ifdesignelseart.com\/index.php?rest_route=\/wp\/v2\/posts\/306","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ifdesignelseart.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ifdesignelseart.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ifdesignelseart.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/ifdesignelseart.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=306"}],"version-history":[{"count":4,"href":"https:\/\/ifdesignelseart.com\/index.php?rest_route=\/wp\/v2\/posts\/306\/revisions"}],"predecessor-version":[{"id":312,"href":"https:\/\/ifdesignelseart.com\/index.php?rest_route=\/wp\/v2\/posts\/306\/revisions\/312"}],"wp:attachment":[{"href":"https:\/\/ifdesignelseart.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=306"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ifdesignelseart.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=306"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ifdesignelseart.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=306"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}