在blender的voronoi.c文件中,变量float co[2]是什么?
In blender's voronoi.c file, what is the variable float co[2]?
以下是 voronoi.c (https://github.com/martijnberger/blender/blob/master/source/blender/blenlib/intern/voronoi.c) 文件及其一些导入库中定义的主要结构:
//from BLI_voronoi.h
typedef struct VoronoiSite {
float co[2];
float color[3];
} VoronoiSite;
typedef struct VoronoiEdge {
struct VoronoiEdge *next, *prev;
float start[2], end[2]; /* start and end points */
/* this fields are used during diagram computation only */
float direction[2]; /* directional vector, from "start", points to "end", normal of |left, right| */
float left[2]; /* point on Voronoi place on the left side of edge */
float right[2]; /* point on Voronoi place on the right side of edge */
float f, g; /* directional coeffitients satisfying equation y = f * x + g (edge lies on this line) */
/* some edges consist of two parts, so we add the pointer to another part to connect them at the end of an algorithm */
struct VoronoiEdge *neighbour;
} VoronoiEdge;
typedef struct VoronoiTriangulationPoint {
float co[2];
float color[3];
int power;
} VoronoiTriangulationPoint;
VoronoiSite 包含一种颜色,我假设它是每个单元格的颜色,因为对 VoronoiSite 的两个引用都包含一个从 i = 0 到整数“sitestotal”的循环和一个名为 co 的变量,可能是 2d坐标?
什么是图表计算?
VoronoiEdge 是不言自明的,它引用了 voronoi 单元的边缘,但是为什么当 blender 中的节点可以达到 4D 时坐标是 2D 的?我将继续查看 voronoi.c 脚本来寻找答案。
VoronoiTriangulationPoint 再次具有该协变量,int“power”可能是指距离函数 a^k + b^k = c^k 的幂 k,blender 在 voronoi 节点中进行调整。
总结一下BLI_voronoi.h,float co[2]是什么?
另一个让我绞尽脑汁的结构是来自 voronoi.c 的 VoronoiEvent。我真的不需要这个答案,但如果有人知道答案就太好了。
//from voronoi.c
typedef struct VoronoiEvent {
struct VoronoiEvent *next, *prev;
int type; /* type of event (site or circle) */
float site[2]; /* site for which event was generated */
struct VoronoiParabola *parabola; /* parabola for which event was generated */
} VoronoiEvent;
“站点”或“圆”有点含糊,我确定它指的是 voronoi 单元的形状,但指的是具有一系列 VoronoiEdge 边缘的单元的形状作为“站点”或“圆”没有任何意义。
“产生事件的抛物线”完全超出了我的任何假设。
我想统一实现 blender 的程序 voronoi,但这对我来说有点太高级了,这个答案只是为了让我可以结束这个问题。
以下是 voronoi.c (https://github.com/martijnberger/blender/blob/master/source/blender/blenlib/intern/voronoi.c) 文件及其一些导入库中定义的主要结构:
//from BLI_voronoi.h
typedef struct VoronoiSite {
float co[2];
float color[3];
} VoronoiSite;
typedef struct VoronoiEdge {
struct VoronoiEdge *next, *prev;
float start[2], end[2]; /* start and end points */
/* this fields are used during diagram computation only */
float direction[2]; /* directional vector, from "start", points to "end", normal of |left, right| */
float left[2]; /* point on Voronoi place on the left side of edge */
float right[2]; /* point on Voronoi place on the right side of edge */
float f, g; /* directional coeffitients satisfying equation y = f * x + g (edge lies on this line) */
/* some edges consist of two parts, so we add the pointer to another part to connect them at the end of an algorithm */
struct VoronoiEdge *neighbour;
} VoronoiEdge;
typedef struct VoronoiTriangulationPoint {
float co[2];
float color[3];
int power;
} VoronoiTriangulationPoint;
VoronoiSite 包含一种颜色,我假设它是每个单元格的颜色,因为对 VoronoiSite 的两个引用都包含一个从 i = 0 到整数“sitestotal”的循环和一个名为 co 的变量,可能是 2d坐标?
什么是图表计算? VoronoiEdge 是不言自明的,它引用了 voronoi 单元的边缘,但是为什么当 blender 中的节点可以达到 4D 时坐标是 2D 的?我将继续查看 voronoi.c 脚本来寻找答案。
VoronoiTriangulationPoint 再次具有该协变量,int“power”可能是指距离函数 a^k + b^k = c^k 的幂 k,blender 在 voronoi 节点中进行调整。
总结一下BLI_voronoi.h,float co[2]是什么?
另一个让我绞尽脑汁的结构是来自 voronoi.c 的 VoronoiEvent。我真的不需要这个答案,但如果有人知道答案就太好了。
//from voronoi.c
typedef struct VoronoiEvent {
struct VoronoiEvent *next, *prev;
int type; /* type of event (site or circle) */
float site[2]; /* site for which event was generated */
struct VoronoiParabola *parabola; /* parabola for which event was generated */
} VoronoiEvent;
“站点”或“圆”有点含糊,我确定它指的是 voronoi 单元的形状,但指的是具有一系列 VoronoiEdge 边缘的单元的形状作为“站点”或“圆”没有任何意义。 “产生事件的抛物线”完全超出了我的任何假设。
我想统一实现 blender 的程序 voronoi,但这对我来说有点太高级了,这个答案只是为了让我可以结束这个问题。