这是我自己无法理解的更复杂作业的最后一部分。
基本上它是一个正切函数,使用 C 绘制成 SVG。
我是这样画的:
它应该是这样的:
除了我什至绘制那些未定义切线的线外,它几乎是一样的。我如何摆脱它?我实际上是使用一个简单的 for
循环生成该切线,我知道通过将 Lineto 更改为 Moveto 我将摆脱那些线,但是如何确定一个可用于任何高度的公式/宽度和任何 (-x,x) (-y,y)。有什么想法吗?
源代码: link to my drawing | link to original drawing
编辑:结构
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);
}
最佳答案
如果导数是非有限的,那么您需要移动而不是直线。
关于c - 使用 C 在 SVG 中绘制切线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10969119/