Tình hình là tuần này mình đã bắt đầu làm việc lại với WE. Tiếp tục project Võ lâm, hiện tại thì cũng chưa đâu vào đâu cả nhưng vẫn hi vọng là map sẽ ra vào hè năm này Vấn đề chính bây giờ là mình cần các bạn giúp mình giải bài toán này, nghĩ mãi cả buổi sáng mà vẫn không ra, có lẽ gà quá Cho một khung ABCD hình vuông, Một điểm M ngẫu nhiên nằm trong hình vuông ABCD. Biết đoạn AM = a. Tính các đoạn XA, XM ( hình vẽ bên dưới ) [spoil] [/spoil] Dùng bất cứ phương pháp nào có thể :) Trình bày bằng phương pháp trong we hoặc bằng phưuong pháp toán học cũng được ( coi các điểm A,B,C,D,X,Y.M là các position ). Cảm ơn trước !!!!!!!!!!
Nếu đã coi các điểm A X M là các posittion thì nó đã là 1 tọa độ (x,y). Vậy thì dùng công thức tính khoảng cách giữa 2 tọa độ là ra mà. ví dụ AX = Squareroot( (xA - xX)*2 + (yA - yX)*2 )
thế này thì liên quan gì đến B, C, D ? bài này là "tính 2 cạnh bên của hình vuông khi biết cạnh huyền", mà như thế này sao tính? ít nhất phải cho góc MAY chứ?
thế theo trong we thì không thể tính được à? p/s: Nếu biết góc MAY thì em post lên đây làm gì nữa anh TOM :(
ủa, thế điểm M lấy thế nào? tự nhiên có hay sao? nói rõ từ đầu: làm thế nào có ABCD, làm thế nào có M để rồi phải tính XM, YM
M ngẫu nhiên nhưng là do mình lấy hay nguồn khác, ví dụ như đột nhiên unit U nhảy vào ABCD, lấy đc M là vị trí của U, tính MX, MY? thôi thế này, theo hình vuông trên thì: AB song song trục Y AD song song trục X M( xM, yM) // xM, yM là tọa độ x,y của M A( xA, yA) AN = | xM - xA | AO = | yM - yA | X ( xA, yM ) Y ( xM, yA ) xong chưa? p.s: toán của tôi chỉ trên trung bình một chút thôi
chết, N và O là X và Y trên kia, quên ko ghi vào lúc đầu tính ghi xX, yY nhưng sợ nhầm nên sửa thành O, N
Vậy thì ABCD hình thành trước khi có M, vậy phải biết được tọa độ của 4 điểm A B C D chứ bạn. Không thì làm sao bạn biết nó là hình vuông ? Nếu như dữ kiện mà bạn đưa ra như trên chỉ có M và đoạn AM = a thì không tính được cái gì đâu ^^
Tôi làm theo kiểu vector, hơi dài dòng nhưng chính xác với mọi hình vuông ABCD. A( a[SUB]1[/SUB] ; a[SUB]2[/SUB] ) B( b[SUB]1[/SUB] ; b[SUB]2[/SUB] ) M( m[SUB]1[/SUB]; m[SUB]2[/SUB] ) Ta có vector AB = ( b[SUB]1[/SUB] - a[SUB]1[/SUB] ; b[SUB]2[/SUB] -a[SUB]2[/SUB] ) Phương trình qua AB sẽ là: (a[SUB]2[/SUB] - b[SUB]2[/SUB]) * (x - a[SUB]1[/SUB]) + (b[SUB]1[/SUB] - a[SUB]1[/SUB]) * (y - a[SUB]2[/SUB]) = 0 Tức sẽ bằng: x * (a[SUB]2[/SUB] - b[SUB]2[/SUB]) + y * (b[SUB]1[/SUB] - a[SUB]1[/SUB]) + a[SUB]1[/SUB]*b[SUB]2[/SUB] - a[SUB]2[/SUB]*b[SUB]1[/SUB] = 0 Độ dài MX sẽ bằng: |m [SUB]1[/SUB] *(a [SUB]2[/SUB] - b [SUB]2[/SUB] ) + m [SUB]2[/SUB] * (b [SUB]1[/SUB] - a [SUB]1[/SUB] ) + a[SUB]1[/SUB]*b[SUB]2[/SUB] - a[SUB]2[/SUB]*b[SUB]1[/SUB]| ------------------------------------------------------ <= dấu chia nhá ______căn bậc 2 của [(a[SUB]2[/SUB] - b[SUB]2[/SUB])[SUP]2[/SUP] + (b[SUB]1[/SUB] - a[SUB]1[/SUB])[SUP]2[/SUP]] Và chuyển thành code WE sẽ là: Mã: Set a1 = (X of A) Set a2 = (Y of A) Set b1 = (X of B) Set b2 = (Y of B) Set m1 = (X of M) Set m2 = (Y of M) Set Real[1] = ((a2 - b2) x m1) Set Real[2] = ((b1 - a1) x m2) Set Real[3] = ((a1 x b2) - (a2 x b1)) Set Real[4] = ((a2 - b2) x (a2 - b2)) Set Real[5] = ((b1 - a1) x (b1 - a1)) Set Real[6] = (Abs(((Real[1] + Real[2]) + Real[3]))) Set Real[7] = (Square root((Real[4] + Real[5]))) Set Real[8] = (Real[6] / Real[7]) Ta được Real[8] = MX. Tương tự với AX: Mã: Set a1 = (X of A) Set a2 = (Y of A) Set d1 = (X of D) Set d2 = (Y of D) Set m1 = (X of M) Set m2 = (Y of M) Set Real[1] = ((a2 - d2) x m1) Set Real[2] = ((d1 - a1) x m2) Set Real[3] = ((a1 x d2) - (a2 x d1)) Set Real[4] = ((a2 - d2) x (a2 - d2)) Set Real[5] = ((d1 - a1) x (d1 - a1)) Set Real[6] = (Abs(((Real[1] + Real[2]) + Real[3]))) Set Real[7] = (Square root((Real[4] + Real[5]))) Set Real[8] = (Real[6] / Real[7]) Demo Map: Click here! Demo chỉ có tìm MX thôi, vì... lười. Nhưng đảm bảo X tìm được luôn nằm trên AB [TABLE="class: outer_border, width: 600"] [TR] [TD]Edit tí: khi tìm được MX rồi thì dùng sin, cos, tan để tính AX sẽ nhanh hơn. Cụ thể: cosXMA = sinXAM = MX / MA => Tìm được góc XMA và XAM => AX = XM/tan(XAM)[/TD] [/TR] [/TABLE]
Mình thử làm theo cách này không biết đúng không nhé : _ Chia hình vương ABCD ra làm nhiều hình, mỗi hình có độ dài 700x700 ( distance ) _ Tìm giá trị độ dài từ M đến cạnh AB nhỏ nhất bằng For Loop _ Làm tương tự với các hình còn lại. Chỉ làm với hàng đầu tiên ( Đặt các giá trii này là Min1, Min2,....,Minn ) _ Tìm giá trị nhỏ nhất của dãy Min1, Min2,....,Minn . ===> Giá trị nhỏ nhất là hình chiếu của M trên AB ==> Tìm được MX ===> Các cạnh còn lại p/s: Mình lấy gần đúng thôi :) các bác xem rồi cho lời bình giờ phải đi học đã