我必须逐个像素地绘制任意大小和方向的椭圆.绘制椭圆的主轴和副轴与x轴和y轴对齐似乎很容易,但是将椭圆旋转任意角度似乎比较棘手.最初我虽然可能会绘制未旋转的椭圆并将旋转矩阵应用于每个点,但似乎可能导致错误进行舍入,我需要相当高的精度.
我怀疑这种方法是否正确?我怎样才能更精确地完成这项任务?
我正在使用C++进行编程(尽管这不是真的重要,因为这是一个更加面向算法的问题).
编辑:大卫指出,我想我可能真的想知道如何进行像素插值.
我真的不明白什么时候应该在堆上分配内存,什么时候应该在堆栈上分配内存。我真正知道的是,在堆栈上分配速度更快,但由于堆栈较小,我不应该使用它来分配大型数据结构;在决定在哪里分配内存时我还应该考虑哪些其他因素?编辑:我应该在哪里分配实例变量?
我有两个类,点和像素:
class point {
public:
point(int x, int y) : x(x), y(y) { };
private:
int x, y;
}
template <class T>
class pixel : public point {
public:
pixel(int x, int y, T val) : point(x, y), val(val) { };
private:
T val;
}
Run Code Online (Sandbox Code Playgroud)
现在这是我的问题.我想创建一个容器类(让我们称之为coll),它有一个点或像素的私有向量.如果coll的实例包含像素,我希望它有一个方法toArray(),它将像素向量转换为表示向量内容的T数组.
我将继承这样做:即,我可以创建一个包含点向量的基类coll和包含额外方法的派生类,但是我似乎遇到了问题,因为像素是一个类模板.
有没有人有建议?我可以通过使coll成为类模板来实现这一点吗?
因此,我必须编写一个程序,该程序将遍历图像并记录与其中出现的每个颜色像素相对应的像素位置.例如,给定
http://www.socuteurl.com/fishywishykissy
我需要找到所有黄色,紫色,深粉色等像素的坐标.
在C++中,我会使用哈希表来执行此操作.我将迭代图像,检查每个像素的值,查找该值,如果找到它,则添加到像素坐标向量,如果值尚未存在,则向表中添加新条目.
问题是我可能需要用纯C而不是C++编写这个程序.我怎么会在C中这样做呢?我觉得实现一个哈希表会非常讨厌和容易出错:我应该避免这样做吗?
如果这很重要的话,我对C很缺乏经验并且拥有相当数量的C++经验.
谢谢.