29 #ifndef LIBMV_IMAGE_IMAGE_DRAWING_H
30 #define LIBMV_IMAGE_IMAGE_DRAWING_H
36 template <
class Image,
class Color>
40 if (pim->Contains(yc, xc)) {
47 template <
class Image,
class Color>
51 if (pim->Contains(yc, xc)) {
52 for (
int i = 0; i < pim->Depth(); ++i)
53 (*pim)(yc, xc, i) = *(
col + i);
61 template <
class Image,
class Color>
78 d1 =
b *
b -
a *
a *
b +
a *
a / 4;
80 float rotX = (matXY[0] *
x + matXY[1] *
y);
81 float rotY = (matXY[2] *
x + matXY[3] *
y);
83 rotX = (matXY[0] *
x - matXY[1] *
y);
84 rotY = (matXY[2] *
x - matXY[3] *
y);
86 rotX = (-matXY[0] *
x - matXY[1] *
y);
87 rotY = (-matXY[2] *
x - matXY[3] *
y);
89 rotX = (-matXY[0] *
x + matXY[1] *
y);
90 rotY = (-matXY[2] *
x + matXY[3] *
y);
93 while (
a *
a * (
y - .5) >
b *
b * (
x + 1)) {
95 d1 +=
b *
b * (2 *
x + 3);
98 d1 +=
b *
b * (2 *
x + 3) +
a *
a * (-2 *
y + 2);
102 rotX = (matXY[0] *
x + matXY[1] *
y);
103 rotY = (matXY[2] *
x + matXY[3] *
y);
105 rotX = (matXY[0] *
x - matXY[1] *
y);
106 rotY = (matXY[2] *
x - matXY[3] *
y);
108 rotX = (-matXY[0] *
x - matXY[1] *
y);
109 rotY = (-matXY[2] *
x - matXY[3] *
y);
111 rotX = (-matXY[0] *
x + matXY[1] *
y);
112 rotY = (-matXY[2] *
x + matXY[3] *
y);
115 d2 =
b *
b * (
x + .5) * (
x + .5) +
a *
a * (
y - 1) * (
y - 1) -
a *
a *
b *
b;
118 d2 +=
b *
b * (2 *
x + 2) +
a *
a * (-2 *
y + 3);
122 d2 +=
a *
a * (-2 *
y + 3);
125 rotX = (matXY[0] *
x + matXY[1] *
y);
126 rotY = (matXY[2] *
x + matXY[3] *
y);
128 rotX = (matXY[0] *
x - matXY[1] *
y);
129 rotY = (matXY[2] *
x - matXY[3] *
y);
131 rotX = (-matXY[0] *
x - matXY[1] *
y);
132 rotY = (-matXY[2] *
x - matXY[3] *
y);
134 rotX = (-matXY[0] *
x + matXY[1] *
y);
135 rotY = (-matXY[2] *
x + matXY[3] *
y);
143 template <
class Image,
class Color>
146 if (im.Contains(
y + radius,
x + radius) ||
147 im.Contains(
y + radius,
x - radius) ||
148 im.Contains(
y - radius,
x + radius) ||
149 im.Contains(
y - radius,
x - radius)) {
167 if (d <= 2 * (radius -
y1)) {
171 d = d + 2 * (
y1 - x1 - 1);
181 template <
class Image,
class Color>
188 if (!im.Contains(ya, xa) || !im.Contains(yb, xb)) {
189 int width = pim->Width();
190 int height = pim->Height();
191 const bool xdir = xa < xb, ydir = ya < yb;
192 float nx0 = xa, nx1 = xb, ny0 = ya, ny1 = yb, &xleft = xdir ? nx0 : nx1,
193 &yleft = xdir ? ny0 : ny1, &xright = xdir ? nx1 : nx0,
194 &yright = xdir ? ny1 : ny0, &xup = ydir ? nx0 : nx1,
195 &yup = ydir ? ny0 : ny1, &xdown = ydir ? nx1 : nx0,
196 &ydown = ydir ? ny1 : ny0;
198 if (xright < 0 || xleft >=
width)
201 yleft -= xleft * (yright - yleft) / (xright - xleft);
204 if (xright >=
width) {
205 yright -= (xright -
width) * (yright - yleft) / (xright - xleft);
208 if (ydown < 0 || yup >=
height)
211 xup -= yup * (xdown - xup) / (ydown - yup);
215 xdown -= (ydown -
height) * (xdown - xup) / (ydown - yup);
225 int xbas, xhaut, ybas, yhaut;
239 int x,
y, dx, dy, incrmX, incrmY, dp,
N, S;
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble y1
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei height
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei width
SIMD_FORCE_INLINE btScalar angle(const btVector3 &v) const
Return the angle between this and another vector.
INLINE Rall1d< T, V, S > cos(const Rall1d< T, V, S > &arg)
INLINE Rall1d< T, V, S > sin(const Rall1d< T, V, S > &arg)
void safePutPixel(int yc, int xc, const Color &col, Image *pim)
void DrawEllipse(int xc, int yc, int radiusA, int radiusB, const Color &col, Image *pim, double angle=0.0)
void DrawLine(int xa, int ya, int xb, int yb, const Color &col, Image *pim)
void DrawCircle(int x, int y, int radius, const Color &col, Image *pim)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)