- 注册时间
- 2015-8-20
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 1849
- 在线时间
- 小时
|
发表于 2026-5-3 20:38:29
|
显示全部楼层
本帖最后由 Jack315 于 2026-5-3 21:12 编辑
给定三角形三个顶点坐标 \(A(x_1,y_1)\),\(B(x_2,y_2)\) 和 \(C(x_3,y_3)\) 。
求向量 \(V_1(x_2-x_1,y_2-y_1)\) 和 \(V_2(x_3-x_1,y_3-y_1)\) 。
三角形面积为两向量构成的矩阵行列式的一半,行列式的符号代表的是方向。
当 \(A,B,C\) 逆时针排列时,取正号,否则取负号,所以面积再取绝对值:
\(S_{\Delta ABC}=\frac{1}{2}\abs{Det\bigg(\begin{bmatrix}x_2-x_1&x_3-x_1\\y_2-y_1&y_3-y_1\end{bmatrix}\bigg)}\)
- 三角形面积[{{x1_, y1_}, {x2_, y2_}, {x3_, y3_}}] := 1/2 Abs[Det[{{x2 - x1, y2 - y1}, {x3 - x1, y3 - y1}}]]
复制代码
计算单位圆内任意三点构成的三角形面积:
- 单位圆内均匀分布点的面积[n_] := Module[
- {i, j, pt, pts, areas},
-
- pts = Table[0, 3];
- areas = Table[0, n];
-
- For[i = 1, i <= n, i++,
- j = 1;
- While[j <= 3,
- pt = {RandomReal[{-1, 1}], RandomReal[{-1, 1}]};
- If[Norm[pt] <= 1, pts[[j]] = pt; j++]
- ];
-
- areas[[i]] = {pts, 三角形面积[pts]}
- ];
-
- areas
- ]
复制代码- 向径和角度均匀分布点的面积[n_] := Module[
- {i, j, r, \[Theta], pts, areas},
-
- pts = Table[0, 3];
- areas = Table[0, n];
-
- For[i = 1, i <= n, i++,
- For[j = 1, j <= 3, j++,
- {r, \[Theta]} = {RandomReal[], 2 \[Pi] RandomReal[]};
- pts[[j]] = r {Cos[\[Theta]], Sin[\[Theta]]};
- ];
- areas[[i]] = {pts, 三角形面积[pts]}
- ];
-
- areas
- ]
复制代码
取 10000 个三角形计算面积:
或者:
- s = 向径和角度均匀分布点的面积[10000];
复制代码
作单位圆内点的散点图
- points = Table[s[[i, 1, 1]], {i, Length[s]}];
- points = Join[points, Table[s[[i, 1, 2]], {i, Length[s]}]];
- points = Join[points, Table[s[[i, 1, 3]], {i, Length[s]}]];
- ListPlot[points, AspectRatio -> 1]
复制代码
单位圆内三角形面积统计数据和直方图:
- y = Table[s[[i, 2]], {i, Length[s]}];
- {Min[y], Max[y], Mean[y], Median[y]}
- Histogram[y, 50]
复制代码 |
|