একটি ত্রিভুজের তিনটি বিন্দু দেওয়া হয়েছে; P বিন্দুটি ত্রিভুজের ভিতরে আছে কিনা তা পরীক্ষা করার জন্য আরেকটি বিন্দু P দেওয়া হয়েছে।
সমস্যা সমাধানের জন্য, ত্রিভুজের বিন্দুগুলি A, B, এবং C বিবেচনা করা যাক। যখন ত্রিভুজের ক্ষেত্রফল Δ𝐴𝐵𝐶 =Δ𝐴𝐵𝑃 + Δ𝑃𝐵𝐶 + Δ𝐴𝑃𝐶 তখন P বিন্দুটি ত্রিভুজের ভিতরে থাকে।
ইনপুট এবং আউটপুট
Input: Points of the triangle {(0, 0), (20, 0), (10, 30)} and point p (10, 15) to check. Output: Point is inside the triangle.
অ্যালগরিদম
isInside(p1, p2, p3, p)
ইনপুট: একটি ত্রিভুজের তিনটি বিন্দু, পরীক্ষা করার জন্য বিন্দু p।
আউটপুট: সত্য, যখন p ত্রিভুজের ভিতরে থাকে।
Begin area := area of triangle(p1, p2, p3) area1 := area of triangle(p, p2, p3) area2 := area of triangle(p1, p, p3) area3 := area of triangle(p1, p2, p) if area = (area1 + area2 + area3), then return true else return false End
উদাহরণ
#include <iostream> #include<cmath> using namespace std; struct Point { int x, y; }; float triangleArea(Point p1, Point p2, Point p3) { //find area of triangle formed by p1, p2 and p3 return abs((p1.x*(p2.y-p3.y) + p2.x*(p3.y-p1.y)+ p3.x*(p1.yp2.y))/2.0); } bool isInside(Point p1, Point p2, Point p3, Point p) { //check whether p is inside or outside float area = triangleArea (p1, p2, p3); //area of triangle ABC float area1 = triangleArea (p, p2, p3); //area of PBC float area2 = triangleArea (p1, p, p3); //area of APC float area3 = triangleArea (p1, p2, p); //area of ABP return (area == area1 + area2 + area3); //when three triangles are forming the whole triangle } int main() { Point p1={0, 0}, p2={20, 0}, p3={10, 30}; Point p = {10, 15}; if (isInside(p1, p2, p3, p)) cout << "Point is inside the triangle."; else cout << "Point is not inside the triangle"; }
আউটপুট
Point is inside the triangle.