1. Chú ý: Các bạn nên tham khảo Nội quy trước khi viết bài (click vào liên kết bên dưới).
    * Nội quy và Thông báo diễn đàn CNCProVN.com
    * Nếu bạn thấy hứng thú với bài viết. Hãy dùng chức năng Share to facebook để chia sẻ bài viết lên facebook.

          
Kết quả 1 đến 11 của 11

Chủ đề: Thuật toán đơn giản cho mục đích tự lập trình CNC

Threaded View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Spam killer ahdvip's Avatar
    Ngày tham gia
    Nov 2013
    Đang ở
    Ho Chi Minh City, Vietnam, Vietnam
    Bài viết
    987
    Cám ơn
    105
    Được cám ơn 599 lần
           ở 321 bài viết

    Thuật toán đơn giản cho mục đích tự lập trình CNC

    Chào mọi người!
    -Trước đây em đã từng tự làm cho mình một máy CNC với phần mềm tự viết, tất nhiên thì phần mềm đó so với bây giờ chỉ có thể gọi là cùi bắp nhưng lúc đó nó là tất cả những niềm đam mê của em. Tuy vậy nhưng em biết cũng có rất nhiều anh em, các bạn sinh viên ít được tiếp xúc với CNC như em lúc đó cũng có cùng một sở thích đó là khát khao tự mình làm ra một phần mềm điều khiển máy cnc.
    -Trước đây khi làm máy CNC cho mình thì em có sử dụng một thuật toán của đồ hoạ máy tính để lập trình cho vi điều khiển, hôm nay em xin chia sẻ với mọi người để anh em nào thích có thể dựa vào đó để tham khảo một chút ít kinh nghiệm. Em không nói nó tối ưu nhưng nó đủ để làm một ứng dụng CNC đơn giản.

    THUẬT TOÁN BRESENHAM
    Hôm nay chỉ giới thiệu phần giải thuật để vẽ một đường thẳng bằng giải thuật Bresenham. Một máy CNC chạy G00-G01 thì vậy là đủ.
    +Giới thiệu sơ qua thuật toán Bresenham
    -Đây là một trong những thuật toán cổ nhất trong đồ hoạ máy tính được Jack E. Bresenham thiết kế vào năm 1962 tại công ty IBM.
    -Ưu điểm lớn nhất của thuật toán này là tốc độ xử lý rất nhanh do nó chỉ sử dụng các lệnh cộng trừ số học và lệnh trên pixel.
    -Chính nhờ giải thuật cực kì đơn giản, nên ngày nay nó vẫn được sử dụng rộng rãi và thường được thực hiện cả trong các card đồ họa hiện đại.
    +Vào vấn đề
    -Một đường cong bất kì sẽ bao gồm rất nhiều đường thẳng và với giải thuật này chúng ta sẽ vẽ một đường thẳng theo dạng bao gồm nhiều pixel.
    Click vào ảnh để xem ảnh lớn hơn. 

Name:	untitled3_zps8a6c3ffc.png 
Views:	172 
Size:	36.7 KB 
ID:	675
    -Một đường thẳng khi ta có được toạ độ điểm đầu và điểm cuối thì ta sẽ tính được hệ số góc của đường thẳng đó, dùng hệ số góc đó để áp vào các trường hợp của thuật toán này.
    Click vào ảnh để xem ảnh lớn hơn. 

Name:	untitled_zps0ec9499b.png 
Views:	9 
Size:	267.0 KB 
ID:	676
    -Sơ đồ giải thuật cụ thể cho một trường hợp
    Click vào ảnh để xem ảnh lớn hơn. 

Name:	untitled2_zps65360626.png 
Views:	4 
Size:	95.2 KB 
ID:	677

    +Ví dụ cụ thể: Cho điểm A( 3,4 ) và điểm B( 8,8 ). Tính các điểm thuộc đoạn AB theo thuật toán Bresenham
    Giải:
    dx=x2-x1=8-3=5;dy=y2-y1=8-4=4;
    p=2*đy-dx=2*4-5=3;
    c1=2*dy=2*4=8;c2=2*dy-2*dx=x*4-2*5=-2;
    x=3;y=4;
    Vẽ (3,4);
    p>=0 → p=p+c2=3+(-2)=1;y=y+1=4+1=5;
    x=x+1=3+1=4<=x2;
    Vẽ (4,5);
    p>=0 → p=p+c2=1+(-2)=-1;y=y+1=5+1=6;
    x=x+1=4+1=5<=x2;
    Vẽ (5,6);
    p<0 → p=p+c1=-1+8=7;
    x=x+1=5+1=6<=x2;
    Vẽ (6,6);
    p>=0 → p=p+c2=7+(-2)=5;y=y+1=6+1=7;
    x=x+1=6+1=7<=x2;
    Vẽ (7,7);
    p>=0 → p=p+c2=5+(-2)=3;y=y+1=7+1=8;
    x=x+1=7+1=8<=x2;
    Vẽ ( 8,8 );
    p>=0 → p=p+c2=3+(-2)=1;y=y+1=8+1=9;
    x=x+1=8+1=9>x2 → Dừng;
    Vậy các điểm thuộc đoạn AB là: ( 3,4 ) ( 4,5 ) ( 5,6 ) ( 6,6 ) ( 7,7 ) ( 8,8 ).

    Đang làm việc nên viết vội được chừng này, hy vọng anh em không chê, có chỗ nào sai thì bảo em, có giải thuật nào tốt hơn thì cùng chia sẻ.
    Thanks all!!
    Lần sửa cuối bởi ahdvip, ngày 11-11-2013 lúc 11:28:48 AM.

  2. Có 6 thành viên đã cám ơn ahdvip cho bài viết hữu ích này:


Các Chủ đề tương tự

  1. eto kẹp đơn giản nhưng cực kì chính xác.
    Bởi Nam CNC trong diễn đàn Trao đổi kinh nghiệm
    Trả lời: 1
    Bài viết cuối: 05-05-2015, 01:10:47 AM

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •