龙空技术网

要用C语言实现计算内切圆的圆心和半径

一起来找书 52

前言:

现时朋友们对“c语言怎么输出数字三角形和圆形”可能比较关切,你们都想要了解一些“c语言怎么输出数字三角形和圆形”的相关内容。那么小编也在网上网罗了一些关于“c语言怎么输出数字三角形和圆形””的相关知识,希望姐妹们能喜欢,朋友们快快来了解一下吧!

要用C语言实现计算内切圆的圆心和半径,并使用EasyX库绘制出来,可以按照以下步骤编写代码:

1. 定义一个结构体来表示点。

2. 编写函数计算两点之间的距离的平方(避免浮点数误差)。

3. 编写函数计算三角形的边长。

4. 编写函数使用海伦公式计算三角形的面积。

5. 编写函数计算内切圆的半径。

6. 编写函数计算内切圆的圆心坐标。

7. 使用EasyX库函数绘制三角形和内切圆。

以下是具体的C语言实现代码:

```c

#include

#include

#include

#include

typedef struct {

double x;

double y;

} POINT;

// 计算两点之间的距离的平方

double DistanceSq(POINT p1, POINT p2) {

return (p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y);

}

// 计算三角形边长

double SideLength(POINT p1, POINT p2) {

return sqrt(DistanceSq(p1, p2));

}

// 使用海伦公式计算三角形面积

double TriangleArea(POINT A, POINT B, POINT C) {

double a = SideLength(B, C);

double b = SideLength(C, A);

double c = SideLength(A, B);

double s = (a + b + c) / 2;

return sqrt(s * (s - a) * (s - b) * (s - c));

}

// 计算内切圆半径

double Inradius(POINT A, POINT B, POINT C) {

double area = TriangleArea(A, B, C);

double semiPerimeter = DistanceSq(B, C) + DistanceSq(C, A) + DistanceSq(A, B) - DistanceSq(A, B) / 4 - DistanceSq(C, A) / 4 - DistanceSq(B, C) / 4;

return area / semiPerimeter;

}

// 计算内切圆圆心坐标

POINT Incenter(POINT A, POINT B, POINT C) {

double u = DistanceSq(C, A) * (DistanceSq(B, C) + DistanceSq(C, A) - DistanceSq(A, B));

double v = DistanceSq(A, B) * (DistanceSq(C, A) + DistanceSq(A, B) - DistanceSq(B, C));

double w = DistanceSq(B, C) * (DistanceSq(A, B) + DistanceSq(B, C) - DistanceSq(C, A));

double x = (u * A.x + v * B.x + w * C.x) / (u + v + w);

double y = (u * A.y + v * B.y + w * C.y) / (u + v + w);

return (POINT){x, y};

}

int main() {

int gd = DETECT, gm;

initgraph(&gd, &gm, "C:\\TC\\BGI");

POINT A = {100, 200};

POINT B = {300, 300};

POINT C = {200, 100};

// 画出三角形的顶点

circle(A.x, A.y, 5);

circle(B.x, B.y, 5);

circle(C.x, C.y, 5);

// 计算内切圆的半径和圆心

double inradius = Inradius(A, B, C);

POINT incenter = Incenter(A, B, C);

// 画出内切圆

circle(incenter.x, incenter.y, inradius);

// 等待用户按键

_getch();

closegraph();

return 0;

}

```

标签: #c语言怎么输出数字三角形和圆形