AI Empire Academy
CHUYÊN ĐỀ C++ THỰC CHIẾN

Bài tập Hình học tính toán (Computational Geometry) trong C++

Mô hình hóa và xử lý các bài toán điểm, đường thẳng, góc và đa giác trong không gian 2D với độ chính xác số học cao, tránh sai số dấu phẩy động.

12

bài tập có chấm code

Bài tập theo chuyên đề, có đề bài, ví dụ và starter code riêng.

1

cơ bản

Củng cố nền tảng và làm quen với kỹ thuật cốt lõi.

1

trung bình

Kết hợp nhiều bước suy luận để vận dụng kiến thức.

10

nâng cao

Thử thách tối ưu, cấu trúc dữ liệu và thuật toán chuyên sâu.

Lộ trình thực hành đề xuất

Bước 1

Cấu trúc Điểm & Vector

Xây dựng struct Point { double x, y; } và các phép toán cộng trừ vector.

Bước 2

Tích có hướng (Cross Product)

Xác định hướng quay (ngược chiều/thuận chiều kim đồng hồ) và diện tích tam giác.

Bước 3

Giao điểm & Đa giác

Kiểm tra hai đoạn thẳng cắt nhau và tính diện tích đa giác bằng công thức Shoelace.

Bước 4

Bao lồi (Convex Hull)

Cài đặt thuật toán Andrew/Monotone Chain tìm tập bao lồi trong O(N log N).

Lỗi thường gặp & Cách phòng tránh

•

So sánh hai số thực bằng == thay vì dùng hằng số epsilon (abs(a - b) < EPS).

•

Sai số tràn kiểu số nguyên khi tính tích có hướng của tọa độ lớn (cần ép kiểu sang long long hoặc __int128).

Danh sách bài tập thực hành (12 bài)

Trong mỗi mức độ, bài tập được xếp từ dễ nhất đến khó nhất — hãy đi theo số bước.

Cơ bản 1 bài

cpp-205Bước 1Cơ bản

Tính Khoảng Cách Euclid Giữa Hai Điểm 2D

Hình học tính toán và đồ họa máy tính sử dụng khoảng cách Euclid như thước đo cơ bản để tính độ dài đoạn thẳng, phát hiện va chạm và đo độ tương đồng không gian. Việc thực hiện chí…

Trung bình 1 bài

Nâng cao 10 bài

Thử thách

Thuật toán chuyên sâu: quy hoạch động, đồ thị, cây.

cpp-192Bước 2Nâng cao

Giao các nửa mặt phẳng trong O(N log N)

Một nửa mặt phẳng có hướng được biểu diễn bởi tia đi từ điểm P đến điểm Q, quy ước nửa mặt phẳng hợp lệ nằm ở phía bên trái của vector PQ (tức là PQ × PX…

Chuyên sâu

Cấu trúc dữ liệu nâng cao và nhiều bước chứng minh.