You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Mathematica中编写绘制指定参数n角星的star函数?

Mathematica 绘制n角星的实现方案

核心函数说明

你提到的Graphics、Line、Table都是必需的,另外还需要用到三角函数Cos/Sin完成极坐标到直角坐标的转换,以及GCD(按需)处理不同样式星形的顶点步长:

  • Graphics:作为图形渲染容器,承载所有绘图元素
  • Line:定义连接顶点的闭合线段,是构成星形的核心元素
  • Table:批量生成所有顶点的坐标,替代手动逐个计算
  • Cos/Sin:将极坐标(角度、半径)转换为Mathematica绘图需要的直角坐标
  • GCD:自动筛选合法的星形步长(实现通用n角星时使用)

示例代码实现

1. 支持自定义步长的通用版本

此版本允许指定步长k(k需与n互质且1<k<n/2,不同k会生成不同样式的n角星):

star[n_, k_] := Graphics[
  Line[Table[
    {Cos[Pi/2 - 2 Pi k i/n], Sin[Pi/2 - 2 Pi k i/n]},
    {i, 0, n}  (* 生成n+1个点,最后一个与第一个重合,保证图形闭合 *)
  ]],
  PlotRange -> {{-1.1, 1.1}, {-1.1, 1.1}},  (* 扩大范围避免边缘被截断 *)
  Axes -> True,
  AxesOrigin -> {0, 0}  (* 确保坐标轴中心在(0,0) *)
]

(* 调用示例:绘制标准5角星(步长k=2) *)
star[5, 2]

(* 调用示例:绘制7角星(步长k=3) *)
star[7, 3]

2. 自动选择步长的简化版本

如果不需要自定义步长,此版本会自动选择符合条件的最小步长,生成最常见的n角星样式:

star[n_] := Module[{k},
  (* 筛选出与n互质且在合理范围的最小步长k *)
  k = First[Select[Range[2, Floor[n/2]], GCD[#, n] == 1 &]];
  Graphics[
    Line[Table[
      {Cos[Pi/2 - 2 Pi k i/n], Sin[Pi/2 - 2 Pi k i/n]},
      {i, 0, n}
    ]],
    PlotRange -> {{-1.1, 1.1}, {-1.1, 1.1}},
    Axes -> True,
    AxesOrigin -> {0, 0}
  ]
]

(* 调用示例:自动生成5角星 *)
star[5]

(* 调用示例:自动生成9角星 *)
star[9]

代码细节说明

  • 起始点(0,1)对应的极坐标角度是π/2(90度),代码以此为基准,通过2 Pi k i/n计算每个顶点的角度偏移
  • 半径固定为1,所以Cos和Sin的结果直接作为直角坐标值
  • Table生成n+1个点是为了让最后一个点和第一个点重合,确保星形闭合

内容的提问来源于stack exchange,提问作者user13170084

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 23:55:28