定义了 3 个点的 C 和 c 平均曲线。
定义了 2 个点的 S 和 s 平均曲线。
相关函数为(monkSVG + monkVG/openVG):
void OpenVG_SVGHandler::onPathCubic( float x1, float y1, float x2, float y2, float x3, float y3 ) {
VGubyte seg = VG_CUBIC_TO | openVGRelative();
VGfloat data[6];
data[0] = x1; data[1] = y1;
data[2] = x2; data[3] = y2;
data[4] = x3; data[5] = y3;
vgAppendPathData( _current_group->current_path->path, 1, &seg, data);
}
void OpenVG_SVGHandler::onPathSCubic( float x2, float y2, float x3, float y3 ) {
VGubyte seg = VG_SCUBIC_TO | openVGRelative();
VGfloat data[4];
data[0] = x2; data[1] = y2;
data[2] = x3; data[3] = y3;
vgAppendPathData( _current_group->current_path->path, 1, &seg, data);
}
问题是第二个函数(有 2 个点)结果图像看起来不正确。所以我想尝试用一个看起来可行的功能来替换它。
我试图从上一步存储一个点,但它给出了不正确的结果:
float x2 = d_string_to_float( c, &c );
float y2 = d_string_to_float( c, &c );
float x3 = d_string_to_float( c, &c );
float y3 = d_string_to_float( c, &c );
float x1 = 2 * prevX - x2;
float y1 = 2 * prevY - x2;
_handler->onPathCubic(x1, y1, x2, y2, x3, y3);
prevX = x3;
prevY = y3;