CrossingPolygon[{p1,p2,…,pn}]
给出表示一些点的 Polygon,在平面上从这些点出发的射线从任意方向上穿过线段 {p1,p2},…,{pn-1,pn},{pn,p1} 奇数次.
CrossingPolygon[{{p11,p12,…},{p21,p22,…},…}]
根据线段 {p11,p12},…,{p21,p22},… 给出 Polygon.
CrossingPolygon
CrossingPolygon[{p1,p2,…,pn}]
给出表示一些点的 Polygon,在平面上从这些点出发的射线从任意方向上穿过线段 {p1,p2},…,{pn-1,pn},{pn,p1} 奇数次.
CrossingPolygon[{{p11,p12,…},{p21,p22,…},…}]
根据线段 {p11,p12},…,{p21,p22},… 给出 Polygon.
更多信息和选项
- CrossingPolygon 也被称为奇偶填充规则.
- 如果从该点出发的射线从任意方向上穿过边界线奇数次,那么该点属于 CrossingPolygon. 射线交叉的次数由 CrossingCount 给出.
- 下面给出了每个区域的射线交叉次数.
- CrossingPolygon 用于根据可能自相交的闭合曲线定义多边形.
- CrossingPolygon[{p1,p2,…,pn}] 实际上等价于 Polygon[{p1,p2,…,pn}].
- 一般情况下,CrossingPolygon[{{p11,p12,…},{p21,p22,…},…}] 不同于 Polygon[{{p11,p12,…},{p21,p22,…},…}],因为前者将对所有闭合曲线 {pi1,pi2,…} 使用射线交叉规则. 后者为多边形 Polygon[{pi1,pi2,…}] 的并集.
- 可有任意多个点 pi,但必须都在一个平面上.
- CrossingPolygon 接受与 Polygon 一样的选项.
-
VertexColors Automatic 进行插值着色时顶点的颜色 VertexNormals Automatic 显示明暗度用的有效顶点法线 VertexTextureCoordinates None 显示纹理时使用的坐标
所有选项的列表
范例
打开所有单元 关闭所有单元基本范例 (2)
范围 (11)
基本用法 (5)
CrossingPolygon[{{0, 0}, {1, 0}, {1, 1}}]Graphics[%]CrossingPolygon[{{1, 0, 0}, {1, (2/Sqrt[5]), (1/Sqrt[5])}, {1 - Sqrt[(5/6)], (2/Sqrt[5]) - (1/Sqrt[30]), Sqrt[(2/15)] + (1/Sqrt[5])}}]Graphics3D[%]CrossingPolygon[{{1, 0, 0, 3}, {1, 1, 1, 3}, {(2/3), (1/3), (2/3), 3}, {0, 0, 1, 3}}]CrossingPolygon[{{0.35, 0.2}, {0.9, 0.75}, {0.1, 0.55}, {0.9, 0.35}, {0.42, 0.9}}]Graphics[%]CrossingPolygon[{{{0.3, 0.}, {-0.8, 0.6}, {-0.8, -0.6}, {0.3, 0.}}, {{1.5, 0.}, {0.4, 0.6}, {0.4, -0.6}, {1.5, 0.}}}]Graphics[%]自相交轮廓线 (3)
CrossingPolygon 适用于自相交轮廓线:
CrossingPolygon[IconizedObject[«[image]»]]Graphics[%]CrossingPolygon[{{0, 0}, {1, 0}, {1, 1}, {0, 0}, {1, 0}, {1, 1}}]Graphics[%]CrossingPolygon[IconizedObject[«[image]»]]Graphics[%]多个轮廓线 (3)
CrossingPolygon 适用于多个轮廓线:
CrossingPolygon[IconizedObject[«[image]»]]Graphics[%]CrossingPolygon[IconizedObject[«[image]»]]Graphics[%]CrossingPolygon[IconizedObject[«[image]»]]Graphics[%]选项 (6)
VertexColors (2)
VertexNormals (1)
{p1, p2, p3} = {{1, 0, 0}, {1, 1, 1}, {0, 0, 1}};n = Cross[p2 - p1, p3 - p1]Graphics3D[{Yellow, CrossingPolygon[{p1, p2, p3}, VertexNormals -> {n, n, n}]}]Graphics3D[{Yellow, CrossingPolygon[{p1, p2, p3}, VertexNormals -> {-n, n, n}]}]VertexTextureCoordinates (3)
Graphics[{Texture[ExampleData[{"TestImage", "Airplane2"}]], CrossingPolygon[{{1, 1}, {3, 1}, {3, 3}, {1, 3}}, VertexTextureCoordinates -> {{0, 0}, {1, 0}, {1, 1}, {0, 1}}]}]Graphics3D[{Texture[ExampleData[{"TestImage", "Airplane2"}]], CrossingPolygon[{{-1, -1, 0}, {1, -1, 0}, {1, 1, 0}, {-1, 1, 0}}, VertexTextureCoordinates -> {{0, 0}, {1, 0}, {1, 1}, {0, 1}}]}, Lighting -> "Neutral"]{Graphics[{Texture[ExampleData[{"TestImage", "Mandrill"}]], CrossingPolygon[{{1, 1}, {3, 1}, {3, 3}, {1, 3}}, VertexTextureCoordinates -> {{0, 0}, {2, 0}, {2, 2}, {0, 2}}]}], Graphics3D[{Texture[ExampleData[{"TestImage", "Mandrill"}]], CrossingPolygon[{{-1, -1, 0}, {1, -1, 0}, {1, 1, 0}, {-1, 1, 0}}, VertexTextureCoordinates -> {{0, 0}, {2, 0}, {2, 2}, {0, 2}}]}, Lighting -> "Neutral"]}纹理映射没有 VertexColors 的优先级高:
Graphics3D[{Texture[[image]], CrossingPolygon[{{-1, -1, -1}, {1, -1, -1}, {1, 1, -1}, {-1, 1, -1}}, VertexTextureCoordinates -> {{0, 0}, {1, 0}, {1, 1}, {0, 1}},
VertexColors -> {Red, Green, Blue, Purple}]}, Lighting -> "Neutral"]应用 (3)
基本应用 (1)
contours = {IconizedObject[«[image]»], IconizedObject[«[image]»], IconizedObject[«[image]»]};
Grid[{{"self-intersecting", "overlay", "nested"},
Graphics[Line[#], ImageSize -> {80, 80}]& /@ contours,
Graphics[CrossingPolygon[#], ImageSize -> {80, 80}]& /@ contours}, Spacings -> {Automatic, {0, 1.5, 1}}, Dividers -> {None, {2 -> GrayLevel[.5], -2 -> Directive[GrayLevel[.2], Dotted]}}]计算机图形 (1)
属性和关系 (3)
对于单轮廓线,CrossingPolygon 实际上等价于 Polygon:
pts = {{0.35, 0.2}, {0.9, 0.75}, {0.1, 0.55}, {0.9, 0.35}, {0.42, 0.9}};Graphics /@ {CrossingPolygon[pts], Polygon[pts]}一般情况下,对于多个相交轮廓线,CrossingPolygon 不同于 Polygon:
pts = IconizedObject[«[image]»];Graphics /@ {CrossingPolygon[pts], Polygon[pts]}WindingPolygon 是另一个可用来构建多边形的函数:
pts = {{0.35, 0.2}, {0.9, 0.75}, {0.1, 0.55}, {0.9, 0.35}, {0.42, 0.9}};Graphics /@ {CrossingPolygon[pts], WindingPolygon[pts]}可能存在的问题 (1)
CrossingPolygon 中的点必须位于一个平面上:
CrossingPolygon[{{0, 0, 0}, {1, 1, 0}, {0, 1, 0}, {0, 0, 1}}]文本
Wolfram Research (2019),CrossingPolygon,Wolfram 语言函数,https://reference.wolfram.com/language/ref/CrossingPolygon.html.
CMS
Wolfram 语言. 2019. "CrossingPolygon." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/CrossingPolygon.html.
APA
Wolfram 语言. (2019). CrossingPolygon. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/CrossingPolygon.html 年
BibTeX
@misc{reference.wolfram_2026_crossingpolygon, author="Wolfram Research", title="{CrossingPolygon}", year="2019", howpublished="\url{https://reference.wolfram.com/language/ref/CrossingPolygon.html}", note=[Accessed: 15-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_crossingpolygon, organization={Wolfram Research}, title={CrossingPolygon}, year={2019}, url={https://reference.wolfram.com/language/ref/CrossingPolygon.html}, note=[Accessed: 15-September-2026]}