1

这是我比较复杂的作业的最后一部分,我自己也搞不清楚。

基本上它是一个切线函数,使用 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);
}
4

1 回答 1

0

如果导数是非有限的,那么您需要移动而不是线。

于 2012-06-10T13:58:39.843 回答