Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: Tính P trong giải thuật vẽ đường thẳng Bresenham!

  1. #1
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    31

    Angry Tính P trong giải thuật vẽ đường thẳng Bresenham!

    Chào các bạn. Mình có một chút khúc mắc về việc tính giá trị của biến P trong giải thuật vẽ đường thẳng Bresenham. Mong các bạn chỉ giáo!
    Ví dụ: Cho (x1,y1)=(1,2);(x2,y2)=(13,8). Áp dụng thuật toán Bresenham tính giá trị x,y và P của từng bước?
    Dưới đây là lời giải:
    Ta có:
    dx=x2-x1=12.
    dy=y2-y1=6.
    const1=2*dy=12.
    const2=2*(dy-dx)=-12.
    p=2*dy-dx=0.
    Các bạn có thể cho mình biết để tính được giá trị P đầu tiên làm như trên có đúng không?
    Mình hỏi vậy tại vì có đáp án của bài này như sau:
    dx=x2-x1=12.
    dy=y2-y1=6.
    const1=2*dy=12.
    const2=2*(dy-dx)=-12.
    P=-1.
    xi 1 2 3 4 5 6 7 8 9 10 11 12 13
    yi 2 2 3 3 4 4 5 5 6 6 7 7 8
    pi -1 11 -9 3 -9 3 -9 3 -9 3 -9 3 -9
    Trong đáp án này thì tại sao P=-1?
    Rất mong sớm nhận được sự chỉ dạy của các bạn. Thanks.
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

  2. #2
    Ngày gia nhập
    12 2007
    Bài viết
    224

    Thuật toán bresenham dựa trên ý tưởng tìm điểm xi +1 và yi+1 tiếp theo của điểm x,y . Về thuật toán và cách chứng minh chắc ko cần phải nói nhiều ha . Giá trị đầu tiên của p là p0 được tính theo công thức sau : p0=2dy-dx . Từ đây bạn đã có thể bắt đầu tính các giá trị p tiếp theo ( pi+1 ) theo công thức nếu pi<0 thìe pi+1 =pi+2dy . Nếu pi>=0 thì pi+1=pi+2dy-2dx . Theo mình nghĩ chắc đáp án p0=-1 là sai rồi vì đúng ra nó phải =0 .

  3. #3
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    31

    Cảm ơn sự chia sẻ của bạn. Mình cũng đã tính P và Po=0, chỉ tại giáo trình của mình học bài giải của nó lại là Po=-1 cho nên mình mới thấy khó hiểu.
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

Các đề tài tương tự

  1. Kỹ thuật C++ Vẽ elip bằng thuật toán bresenham trong C chạy không ra kết quả đúng?
    Gửi bởi timduncanboy trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 8
    Bài viết cuối: 08-10-2013, 08:37 PM
  2. Kỹ thuật C++ Trình bày giải thuật Midpoint vẽ đoạn thẳng cho trường hợp -1<a<0
    Gửi bởi honeykt trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 14-07-2010, 09:39 AM
  3. Thuật toán vẽ đường thẳng Bresenham
    Gửi bởi trungtin1710 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 08-06-2010, 10:52 PM
  4. Vẽ đường thẳng DDA và Bresenham!
    Gửi bởi alias_va trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 18-11-2007, 01:00 AM
  5. [ Solved ] Thuật toán vẽ đường thẳng Bresenham
    Gửi bởi nanosi trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 01-11-2007, 01:09 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn