heyhey1994
Thành viên chính thức
- Tham gia
- 16/3/17
- Bài viết
- 78
- Được thích
- 18
Chào cả nhà, em xin trình bày vấn đề của em ạ:
Em có 1 tập hợp nút xanh (A) và nút đỏ (B), có tọa độ tương ứng là X1, Y1 và X2 và Y2. Nay em muốn tìm những điểm B gần từng điểm A trong 1 khoảng cách cho trước, sau đó sẽ liệt kê ra theo phương ngang, mọi người xem thêm trong file excel ạ. Em có 2 ý tưởng:
1. Mình sẽ vẽ vòng tròn từ các điểm A, có bán kính là khoảng cách cho trước, sau đó đi tìm các điểm đỏ nào nằm trong đường tròn. Cách này em chưa biết xử lí bằng code như thế nào.
2. Sẽ tính toàn bộ khoảng cách từ tất cả điểm B đến từng điểm A, sau đó lấy so sánh với khoảng cách cho trước, giá trị nào nhỏ hơn khoảng cách cho trước thì lấy giá trị nút B tương ứng với công thức tính khoảng cách từ tọa độ là SQRT((X1-X2)^2+(Y1-Y2)^2)). Nhưng với cách này thì với bài toán thực tế của em có đến 2000 điểm A và 2000 điểm B thì nó phải chạy lặp đến 4 triệu lần.
Vậy nên em muốn nhờ mọi người giúp em một cách làm hiệu quả khi có hàng ngàn nút.
.
Nếu có chỗ nào chưa rõ ý, mong mọi người nhắn lại cho em biết, em xin cảm ơn ạ.
Em có 1 tập hợp nút xanh (A) và nút đỏ (B), có tọa độ tương ứng là X1, Y1 và X2 và Y2. Nay em muốn tìm những điểm B gần từng điểm A trong 1 khoảng cách cho trước, sau đó sẽ liệt kê ra theo phương ngang, mọi người xem thêm trong file excel ạ. Em có 2 ý tưởng:
1. Mình sẽ vẽ vòng tròn từ các điểm A, có bán kính là khoảng cách cho trước, sau đó đi tìm các điểm đỏ nào nằm trong đường tròn. Cách này em chưa biết xử lí bằng code như thế nào.
2. Sẽ tính toàn bộ khoảng cách từ tất cả điểm B đến từng điểm A, sau đó lấy so sánh với khoảng cách cho trước, giá trị nào nhỏ hơn khoảng cách cho trước thì lấy giá trị nút B tương ứng với công thức tính khoảng cách từ tọa độ là SQRT((X1-X2)^2+(Y1-Y2)^2)). Nhưng với cách này thì với bài toán thực tế của em có đến 2000 điểm A và 2000 điểm B thì nó phải chạy lặp đến 4 triệu lần.
Vậy nên em muốn nhờ mọi người giúp em một cách làm hiệu quả khi có hàng ngàn nút.
.
Nếu có chỗ nào chưa rõ ý, mong mọi người nhắn lại cho em biết, em xin cảm ơn ạ.