問題:設abc三點,形成三角形,求角平分線與ac的交點座標(x', y')
方案:
1. 已知兩點求直線方程:a(x1,y1), b(x2,y2),求直線line(a-b)的一般直線方程
ax + by + c =0
設b=1,使用y=kx+n轉換
a=-(y2-y1)/(x2-x1)
c=-(x2y1-x1y2)/(x2-x1)
可以設b=(x2-x1), 則a=y1-y2, c=x1y2-x2y1,即
a=y1-y2
b=x2-x1
c=x1y2-x2y1
2. 點到線的距離公式 (ax'+by'+c) / 開根號(a1*a1+b1*b1)
直線:ax + by +c =0;
代入點座標(x',y'),
a. 如果ax'+by'+c > 0 標示 在直線的上側
a. 如果ax'+by'+c = 0 標示 在直線上
c. 如果ax'+by'+c = 0 標示 在直線的下側
abs(ax'+by'+c) 越小,距離直線越近
3.已知角平分線與ac交點到角兩端距離相等,設點為x', y',兩端直線位ab:a1x+b1y+c1=0, bc:a2x+b2x+c2=0;
距離公式:
交點距離ab:a1x'+b1y'+c1 / 開根號(a1*a1+b1*b1) 根據直線方程:a1 = y1-y2; b1 = x2-x1; c1 = x1*y2-x2*y1;
交點距離bc:a2x'+b2y'+c2 / 開根號(a2*a2+b2*b2) 根據直線方程:a2 = y2-y3; b2 = x3-x2; c2 = x2*y3-x3*y2;
另外x',y'在ac上,滿足ac直線方程: a3x+b3y+c3=0; 根據直線方程:a3 = y3-y1; b3 = x1-x3; c3 = x3*y1-x1*y3;
a3x'+b3y'+c3=0;
設m1 = 開根號(a1*a1+b1*b1), m2=開根號(a2*a2+b2*b2)
基於這些:最終求得x',y'座標
y' =- (c3 + a3 * (c2*m1-c1*m2)/(a1*m2-a2*m1)) / (a3 * (b2*m1 - b1*m2)/(a1*m2-a2*m1) + b3);;
x' =-(b3*y' + c3)/a3;
上面的方法有乙個缺陷:當ac水平時,a3 = 0,x'出現了無窮大,這種情況可以使用座標變換,使ac不與橫座標水平解決!
4.2d座標系旋轉關係
為了便於表述和分析,我們從平面直角座標系出發,座標系o-xy和座標系o'-x'y'的關係如下圖所示:
對於以上座標關係,我們可以作如下描述:座標系o-xy逆時針旋轉theta(或順時針旋轉-theta)後與座標系o'-x'y'重合,或者座標系o『-x』y『順時針旋轉theta(或逆時針旋轉-theta)後與座標系o-xy重合。利用簡單的之間三角形的餘弦定理和正玄定理就可以得到以下公式(格式編輯不太熟,故以影象代替):
示例**:
#include #include#include#include using namespace std;
const double pi = 3.14;
struct point
};point jiaodian(point a, point b, point c)
point d;
/* 直線 ab:a1x + b1y + c1 = 0
*/ double a1 = a.y - b.y;
double b1 = b.x - a.x;
double c1 = a.x * b.y - b.x * a.y;
/* 直線 bc:a2x + b2y + c2 = 0
*/ double a2 = b.y - c.y;
double b2 = c.x - b.x;
double c2 = b.x * c.y - c.x * b.y;
/* 直線 ac:a3x + b3y + c3 = 0
*/ double a3 = c.y - a.y;
double b3 = a.x - c.x;
double c3 = c.x * a.y - a.x * c.y;
double m1 = sqrt(a1*a1 + b1*b1);
double m2 = sqrt(a2*a2 + b2*b2);
d.y = -(c3 + a3 * (c2*m1 - c1*m2) / (a1*m2 - a2*m1)) / (a3 * (b2*m1 - b1*m2) / (a1*m2 - a2*m1) + b3);
d.x = -(b3*d.y + c3)/a3;
/* 將d座標轉換回原來的座標系
*/ if (flag == true)
return d;
}int main()
求大三角形中三角形個數
一道筆試程式設計題要求求乙個大三角形中所有小三角形的個數,大約是下面這種情況 首先想到是的將問題由求邊長為n的三角形個數 求邊長為n 1的三角形個數 求邊長為1的三角形個數 1,回溯求得所有三角形個數。但是再仔細一看因為有重疊三角形和倒置的三角形,所以這個方法不可行。接著找到三角形個數由三部分組成 ...
求三角形性質
作 者 b23 完成日期 2014年 10 月 31 日 版 本 號 v1.0 輸入描述 輸入三角形的三邊 a,b,c,值,根據其數值,判斷是否能構成三角形,若能,還有判斷其三角形的性質 等邊三角形,等腰三角形,直角三角形和任意三角形。using system using system.collec...
C 已知三角形三邊,求三角形的面積
area 根號 s s a s b s c s a b c 2 三角形三邊長度由cin輸入,需判斷三邊是否構成乙個三角形,若是,則計算其面積並輸出,否則輸出錯誤資訊。程式須有兩個函式,乙個函式用來判斷,另乙個函式用來計算三角形的面積 段 include include using namespace...