Cần giúp đỡ về ý tưởng cho bài toán hình học

mong mọi người giúp mình bài này với. Mình chỉ cần thuật toán với ý tưởng thôi. Còn có code luôn thì thanks mọi người nhé. cám ơn mọi người nhiều

Nếu bạn muốn vi phạm điều lệ của DNH và khóa bài!


Bài chỉ tích tổng diện tích tam giác thôi mà, cần gì ý tưởng và thuật toán? Nó ở Hình học cấp 3 (có khi là cấp 2, chả nhớ).
Có toạ độ thì tính được 3 cạnh. Có 3 cạnh rồi:

Tính diện tích tam giác khi biết 3 cạnh bằng công thức Heron.
S=\sqrt{p(p-a)(p-b)(p-c)}
p=\frac{(a+b+c)}{2}

3 Likes

hình học cấp 3 bạn nhé

nó giống như tìm “hợp” (trong py gọi là set) diện tích của tam giác đó bạn

N hình hợp lại đấy chứ ko phải chọn 1 hình trong số N hình.

4 Likes

tam giác nhỏ nằm trong tam giác lớn thì tính tam giác lớn

đúng rồi bạn ơi. mình bị lấn cấn trong tọa độ nên không làm được

có code nhưng mà có xài được ko :joy:

xài Boost.Geometry hàm union_ nha :V
compile hết 10 giây :V https://rextester.com/UXPGO13597

#include <iostream>
#include <iomanip>
#include <boost/geometry.hpp>

int main() {
    namespace bg = boost::geometry;
    using Point = bg::model::point<double, 2, bg::cs::cartesian>;
    using Polygon = bg::model::polygon<Point>;
    using Polygons = bg::model::multi_polygon<Polygon>;
    
    int n;
    double x1, y1, x2, y2, x3, y3;
    std::cin >> n;
    Polygons u;
    while (std::cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3) {
        Polygon p;
        bg::append(p.outer(), Point(x1, y1));
        bg::append(p.outer(), Point(x2, y2));
        bg::append(p.outer(), Point(x3, y3));
        bg::append(p.outer(), Point(x1, y1));
        bg::correct(p);
        Polygons tmp;
        bg::union_(u, p, tmp);
        u = tmp;
    }
    std::cout << std::fixed << std::setprecision(2) << bg::area(u) << "\n";
}
4 Likes

http://www.angusj.com/delphi/clipper.php

4 Likes

:rofl::rofl::rofl: cám ơn bạn nhiều. Để mình coi thử. mà mik cần thuật toán mà :grin: dị cũng được

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?