Xcode图形计算器sin(X)cos(X)tan(X)

Xcode图形计算器sin(X)cos(X)tan(X),xcode,core-graphics,calculator,Xcode,Core Graphics,Calculator,我想创建一个图形计算器,我一直在使用图形位。我想知道如何绘制sin(x)cos(x)tan(x)的图形。我已经做了网格。我不想使用核心图框架 任何帮助都将不胜感激。 谢谢。若要实际绘制函数,请像使用纸和铅笔一样:评估函数的多个输入。然后画线连接结果点。下面是一些可以回答您问题的伪代码: for i = xmin to xmax do { draw XY point at X=(i*x_scale_factor+x_offset) and Y=(sin(i)*y_scale_factor+Y

我想创建一个图形计算器,我一直在使用图形位。我想知道如何绘制sin(x)cos(x)tan(x)的图形。我已经做了网格。我不想使用核心图框架

任何帮助都将不胜感激。
谢谢。

若要实际绘制函数,请像使用纸和铅笔一样:评估函数的多个输入。然后画线连接结果点。

下面是一些可以回答您问题的伪代码:

for i = xmin to xmax do
{
   draw XY point at X=(i*x_scale_factor+x_offset) and Y=(sin(i)*y_scale_factor+Y_offset);
}
注意:不要在循环中使用浮动

根据评论进行编辑

IMHO,最简单的方法是获取视图的边界,获取数据在X轴和Y轴上的最小值和最大值


然后可以使用
nsaffinettransform
实例转换图形的坐标。因此,一切都可以在您的图形坐标中完成,这更容易。如果愿意,可以在坐标(4.6,3.2*10-7)处书写标签。这是让你开始的关键点。这条路很长。但是使用
nsaffinettransform
会更简单。

我不会这样做(我会查看Core Plot),但您可以使用Core Image generator过滤器绘制这样的图形,如下所示:

//wavelength and magnitude are distances in destination pixels. Think of them as the width and height of each wave.
kernel vec4 sineWave(float wavelength, float magnitude, __color color)
{
    vec2 coord = destCoord();
    coord.y -= magnitude;
    coord /= vec2(wavelength, magnitude / 2.0);
    float pi = radians(180.0);

    float value = sin(coord.x * pi);

    //Smaller threshold = finer wave line. For a gradient, replace the comparison with 1.0 - abs(…).
    float threshold = 0.1;
    float alpha = abs(coord.y - value) <= threshold;
    return color * alpha;
}
//波长和幅值是以目标像素为单位的距离。把它们想象成每个波浪的宽度和高度。
内核vec4正弦波(浮动波长、浮动幅度、彩色)
{
vec2-coord=destCoord();
坐标y-=震级;
coord/=vec2(波长,量级/2.0);
浮点数pi=弧度(180.0);
浮点值=sin(坐标x*pi);
//较小的阈值=更细的波线。对于梯度,将比较替换为1.0-abs(…)。
浮动阈值=0.1;

float alpha=abs(coord.y-value)您需要什么样的帮助?我为图形制作了几个类(数据源、控制器、视图等),但它有2500行和12个类。在这里发布的内容太多了。告诉我们您需要帮助的部分(绘制轴、计算比例等)我们也许可以提供帮助。我提到轴和缩放,因为它们是绘图的关键点。你能说得更具体些吗?你甚至不说你是在MacOS X还是在iOS上工作,更不用说你有什么问题了。@Jean是的,我需要关于绘制轴和缩放的帮助,谢谢你的帮助!@Caleb抱歉,我没有提到项目的内容ect是开着的。更具体地说,它在iOS.iPad上。我遇到的问题是绘制轴和缩放。你看了吗?只是想澄清一下:浮点数作为循环变量是可以的,但不要测试它们是否相等;使用,这通常发生在for循环中…
for(double d=0;d<10.0;d+=0.1)…
Hi Peter,谢谢你的帮助!想法是创建这样的东西:我让网格和计算器部分工作,但想知道如何将三角函数绘制到网格中。