ai có code phép tịnh tiến trong mặt phẳng không cho e xin với
tìm mãi mà không thấy
Xin code phép tịnh tiến trong mặt phẳng
tịnh tiến vector trong mặt phẳng?
tức là tịnh tiến 1 đoạn thẳng hay một hình trong mặt phẳng ý ạ
thế bạn biết tịnh tiến 1 điểm chưa
chưa bác ạ, e mới học nên cũng chẳng biết đằng nào mà lần
thế này nhé. lần này ko liên qua đến code chút. bạn thử xem bên toán thì khi tịnh tiến theo hướng nào đó 1 đoạn bằng bao nhiêu đó thì tọa độ x, y thay đổi ra sao. sau đó hãy áp dụng vào code.
cái ý tưởng thì e biết, vấn đề là không biết hàm với thuật toán thôi
có thể cho em xin hàm di chuyển 1 đường thẳng không ạ
Minh xet trong Oxy khi tịnh tiến 1 đường thẳng thì vector pháp tuyến không thay đổi.
giả sử đường thẳng có pt: ax+by+c=0 và vector tịnh tiến là (u,v)
giả sử b#0: đường thẳng đi qua A(0;-c/b). Qua phép tịnh tiến dc ảnh A’ (u,v-c/b)
=> pt đường thẳng sau phép tịnh tiến:
a(x-u) + b(y-v+c/b) = 0
<=> ax + by + c -au-bv = 0 là pt đường thẳng sau phép tịnh tiến qua vector (u,v)
- nếu bạn lưu thông tin đường thẳng qua hệ số a,b,c:
function tinhtien( {a,b,c} , { u,v} )
return {a,b,c-au-bv}
end - nếu lưu dt qua 2 điểm:
function tinhtien ( { {a1,b1} , {a2,b2}}, {u,v})
return {{a1+u,b1+v}, {a2+u,b2+v}}
end
P/s: ngoặc này {} tượng trưng cho struct lưu thông tin đường thẳng hoặc vector
không ổn lắm. sao ko có trường hợp tịnh tiến theo phương nào đó 1 đoạn bằng bao nhiêu đó nhỉ
ví dụ mình vẽ 1 đoạn thẳng bằng DDA với code:
#include <graphics.h>
#define Round(a) (int)(a+0.5) // lam tron so
#define DELAY 10
int color = RED;
void lineDDA(int x1, int y1, int x2, int y2){ // thuat toan DDA
int x_unit = 1, Dx = x2 - x1, Dy = y2 - y1; // Khoi tao cac gia tri ban dau
int x = x1;
float y = y1;
float m = (float)Dy/Dx; // he so goc m
putpixel(x, Round(y), color);
while(x < x2){
delay(10); // thoi gian tre khi ve 1 diem anh
x += x_unit;
y += m;
putpixel(x,Round(y), color);
}
}
int main(){
int gd=DETECT, gm;
initgraph(&gd,&gm,"c:tcbgi"); // khoi tao cua so do hoa
setbkcolor(WHITE);
lineDDA(50,150, 300, 200); // ve duong thang
getchar();
return 0;
}
thì mình dùng hàm gì để di chuyển đoạn thẳng này 1 vectơ tịnh tiến?
sửa lại code đi bạn ơi, dùng Markdown ấy
là sao bác, tóm lại là bác có hàm tịnh tiến thì cho e xin cái