用单一均匀分布生成球面两点:围绕截角二十面体的均匀离散采样(V=60)
几何画板及绘图内容加载中,请稍等……
该范例展示如何在球面上用一次均匀分布的随机参数生成两个“彼此不同”的点,并通过截角二十面体的双刻度/嵌入式分区思想,使两点在球面上呈现均匀性与较好的覆盖效果。核心数学概念包括:球面几何(sphere)、向量与角度刻画点的位置差异、圆/球面分区的构造、以及基于几何约束的极值筛选(max/min)来确定可行区域与测试值。作图要点:用 Polygon 构造多边形分区/基准结构,借助 Sphere、Circle 给出球面与圆的几何载体;用 PointIn 与 If 根据点是否落在候选区域内进行判定;用 RotateText 辅助标注与文本展示;用 Vector、Angle、Length 表示点的向量关系、夹角与距离度量;同时使用 Max/Min 结合 TableText/Textfield 组织参数表与极值(如 Zmin/Zmax、fmin/fmax)来完成测试与筛选。适合高中竞赛拓展与大学本科几何建模、随机采样/数值实验教学。
GeoGebra 命令及参数
Polygon({((-π), ((-π)) / 2), ((-π), π / 2), (π, π / 2), (π, ((-π)) / 2)}) → q_2PointIn(q_2) → Atest_2Function(f01, (-π), π, ((-π)) / 2, π / 2) → f0Zip((x(a), y(a), f0(a)), a, Zmin_2) → fmin3DZip((x(a), y(a), f0(a)), a, Zmax_2) → fmax3DVector((1.3 * Z3), (1.5 * Z3)) → AVZ3rVector((1.3 * Z3), (1.3 * Z3) + UnitVector[Sum[Zip[UnitVector[a - Z3], a, lP]]]) → AVZ3Vector((1.3 * Z2), (1.5 * Z2)) → AVZ2rVector((1.3 * Z2), (1.3 * Z2) + UnitVector[Sum[Zip[UnitVector[a - Z2], a, lP]]]) → AVZ2Vector((1.3 * Z1), (1.5 * Z1)) → AVZ1rVector((1.3 * Z1), (1.3 * Z1) + UnitVector[Sum[Zip[UnitVector[a - Z1], a, lP]]]) → AVZ1Vector((1.3 * Atest_R), (1.3 * Atest_R) + UnitVector[Sum[Zip[UnitVector[a - Atest_R], a, lP]]]) → AVtestVector((1.3 * Atest_R), (1.5 * Atest_R)) → AVtestrSphere(O, R) → spheraCircle(O, R, xOyPlane) → cPointIn(q_2) → RZ1_2PointIn(q_2) → RZ2_2Angle(AVtest, AVtestr) → αAAngle(AVZ1, AVZ1r) → αZ1Angle(AVZ2, AVZ2r) → αZ2Zip(Segment[Atest_R, p], p, lP) → segSum(seg) → sum_segPolyLine({((-π), ((-π)) / 2), ((-π), π / 2), (π, π / 2), (π, ((-π)) / 2), ((-π), ((-π)) / 2)}) → q1Flatten(Sequence[Sequence[((-π) + ((2 * π / na) * i), ((-π)) / 2 + (π / na * j)), j, 1, na], i, 1, na]) → ltest_2Zip((R; x(a); y(a)), a, ltest_2) → ltest_3Length(lZmax') → lälZmax'Textfield(n) → InputBox11alfa(R, lP, lZsad') → αsadIf(αZ1 > 100°, 180° - αZ1, αZ1) → αZ1'Textfield(m_1) → InputBox12Textfield(t) → InputBox13Textfield(m_2) → InputBox14PointIn(q_2) → RZ3_2Sum(Zip[1 / Length[p - Z3], p, lP]) → ZahZ3Angle(AVZ3, AVZ3r) → αZ3Textfield(R) → InputBox1Textfield(na) → InputBox2Max(f(Zmax_2)) → max_fMin(f(Zmin_2)) → min_fZip(Text["d_{" + (a) + "}", (Atest_R + Element[lP, a]) / 2], a, 1…n) → lPtxtZip(Segment[F_o, p], p, lP) → seg0Sum(seg0) → sum_seg0RotateText(txt, 90°) → txt1Sum(lZ3sad) → sumlZ3sadTextfield(Points3D) → InputBox7Textfield(lZsad') → InputBox17Textfield(lZmin') → InputBox16Textfield(lZmax') → InputBox15Textfield(jmin) → InputBox18Textfield(jmax) → InputBox19Textfield(jsad) → InputBox20Zip(Text["" + (b), a - (0.1, 0.1)], a, Zmax_2, b, 1…Length[Zmax_2]) → l2maxtxtZip(Text["" + (b), a - (0.1, 0.1)], a, Zmin_2, b, 1…Length[Zmin_2]) → l2mintxtZip(Text["" + (b), a - (0.1, 0.1)], a, Zsad_2, b, 1…Length[Zsad_2]) → l2sadtxtZip(Vector[r1, (1.153846154 * r1)], r1, (1.3 * Zip[(R * UnitVector[a]), a, lZmax'])) → lVmaxrZip(Vector[r1, (1.153846154 * r1)], r1, (1.3 * Zip[(R * UnitVector[a]), a, lZmin'])) → lVminrZip(Vector[r1, (1.153846154 * r1)], r1, (1.3 * Zip[(R * UnitVector[a]), a, lZsad'])) → lVsadralfa(R, lP, lZmax') → αmaxalfa(R, lP, lZmin') → αminarrow(R, lP, lZmax') → lVmaxarrow(R, lP, lZmin') → lVminarrow(R, lP, lZsad') → lVsadCurveCartesian((-π) + ((2 * π) * a), ((-π)) / 2, f0((-π) + ((2 * π) * a), ((-π)) / 2), a, 0, 1) → par1CurveCartesian((-π) + ((2 * π) * a), π / 2, f0((-π) + ((2 * π) * a), π / 2), a, 0, 1) → par2CurveCartesian((-π), ((-π)) / 2 + (π * a), f0((-π), ((-π)) / 2 + (π * a)), a, 0, 1) → par3CurveCartesian(π, ((-π)) / 2 + (π * a), f0(π, ((-π)) / 2 + (π * a)), a, 0, 1) → par4Polygon({((-π), ((-π)) / 2), ((-π), π / 2), (π, π / 2), (π, ((-π)) / 2)}) → q_3Textfield(achs) → InputBox3Circle(Atest_2, 0.2) → ciTableText(Append["i", Sequence[Length[lZsad']]], Append["\frac{N°}{levels} ", msad], Append["P_{sad }", lZsad'], Append["(f'x,f'y)", lZf'xysad], Append[" Δα≟ π ", αsad], "v") → text2cTableText(Append["i", Sequence[Length[αmax]]], Append["\frac{N°}{levels} ", mmax], Append["P_{Max }", lZmax'], Append["(f'x,f'y)", lZf'xymax], Append[" Δα≟ π ", αmax], "v") → text2aTableText(Append["i", Sequence[Length[αmin]]], Append["\frac{N°}{levels} ", mmin], Append["P_{Min }", lZmin'], Append["(f'x,f'y)", lZf'xymin], Append[" Δα≟ π ", αmin], "v") → text2bZip((x(a), y(a), f0(a)), a, Zsad_2) → fsad3DZip(Atest_2 + (r_c; ((2 * π / n_c) * k)), k, 0…(n_c - 1)) → l0rSum(Sequence[If[sum00_r(i) ≠ sum00_r(i + 1), 1, 0], i, 1, Length[sum00_r] - 1]) → sum01_rSum(Unique[sgn(f(Atest_2) - f(l0r))]) → sum_r
AI 绘图提示语参考
绘制一个球体,并在球体上随机选取两个不同的点,确保这两个点在球面上均匀分布。首先构建一个截角二十面体模型,然后在球体上随机选取一个点作为起点,通过向量和角度关系生成另一个点,确保两点之间的距离和角度符合均匀分布的要求。最后,使用点在区域内的测试验证生成的点是否满足条件。
以上提示语为根据原始绘图命令整理而来,仅供参考。