这是我比较复杂的作业的最后一部分,我自己也搞不清楚。
基本上它是一个切线函数,使用 C 绘制到 SVG。
我是这样画的:
这就是它的样子:
它几乎是一样的,除了我画的是那些没有定义切线的线。我该如何摆脱它?我实际上是使用一个简单的for
循环生成该切线,并且我理解通过将 Lineto 更改为 Moveto 我将摆脱那些线,但是如何确定一个可用于任何高度/宽度和任何 (-x,x ) (-y,y)。有什么想法吗?
编辑:结构
typedef struct svg_graph{
int w;
int h;
int x;
int y;
} graph;
和代码本身:
double initializer = 0;
double m = 0;
double temp = 0;
initializer = svg->h/2 - tan(-svg->x)*(((double)svg->h/2)/svg->y);
fprintf(output, "<path clip-path=\"url(#myClip)\" d=\"M 0 %.1f", initializer)
temp = ((double)svg->x/(svg->w/2));
m = svg->h/2 - tan(-svg->x+temp)*((double)(svg->h/2)/svg->y);
for (int i = 1; i<=svg->w; i++){
fprintf(output, " L %d %.1f", i, m);
temp = ((double)svg->x/(svg->w/2)) + temp;
m = svg->h/2 - tan(-svg->x+temp)*((double)(svg->h/2)/svg->y);
}