Статьи
Форум
Q&A
Полезные коды
Войти
Регистрация
Привет, Гость!
Войти
Войти с VK
Войти с Google
Регистрация
Информация
Статьи
Работа с графикой
Комментарии
Обработка изображений 8. Масштабирование изображений
Askalite
[Off]
(21.03.2019 / 02:27)
[копировать]
[скачать]
function vertex
(
)
{
this
.
x
=
0.0
;
this
.
y
=
0.0
;
this
.
u
=
0.0
;
this
.
v
=
0.0
;
}
var a
=
new
vertex
(
)
;
var b
=
new
vertex
(
)
;
var c
=
new
vertex
(
)
;
var d
=
new
vertex
(
)
;
var x
=
0
;
var y
=
0
;
var u
=
0.0
;
var v
=
0.0
;
var du
=
0.0
;
var dv
=
0.0
;
var u1
=
0.0
;
var v1
=
0.0
;
var u2
=
0.0
;
var v2
=
0.0
;
vat u3
=
0.0
;
var v3
=
0.0
;
var x1
=
0.0
;
var x2
=
0.0
;
var x3
=
0.0
;
function drawTriangle
(
)
{
if
(
a.
y
>
b.
y
)
{
d
=
a
;
a
=
b
;
b
=
d
;
}
if
(
a.
y
>
c.
y
)
{
d
=
a
;
a
=
c
;
c
=
d
;
}
if
(
b.
y
>
c.
y
)
{
d
=
b
;
b
=
c
;
c
=
d
;
}
if
(
(
Math.
trunc
(
a.
y
)
==
Math.
trunc
(
c.
y
)
)
return
;
x1
=
a.
x
+
(
c.
x
-
a.
x
)
*
(
b.
y
-
a.
y
)
/
(
c.
y
-
a.
y
)
;
u1
=
a.
u
+
(
c.
u
-
a.
u
)
*
(
b.
y
-
a.
y
)
/
(
c.
y
-
a.
y
)
;
v1
=
a.
v
+
(
c.
v
-
a.
v
)
*
(
b.
y
-
a.
y
)
/
(
c.
y
-
a.
y
)
;
x2
=
b.
x
;
u2
=
b.
u
;
v2
=
b.
v
;
du
=
(
u1
-
u2
)
/
(
x1
-
x2
)
;
dv
=
(
v1
-
v2
)
/
(
x1
-
x2
)
;
for
(
y
=
Math.
trunc
(
a.
y
)
;
y
<=
Math.
yrunc
(
c.
y
)
;
y
++
)
{
x1
=
a.
x
+
(
c.
x
-
a.
x
)
*
(
y
-
a.
y
)
/
(
c.
y
-
a.
y
)
;
u1
=
a.
u
+
(
c.
u
-
a.
u
)
*
(
y
-
a.
y
)
/
(
c.
y
-
a.
y
)
;
v1
=
a.
v
+
(
c.
v
-
a.
v
)
*
(
y
-
a.
y
)
/
(
c.
y
-
a.
y
)
;
if
(
y
>=
b.
y
)
{
x2
=
b.
x
+
(
c.
x
-
b.
x
)
*
(
y
-
b.
y
)
/
(
c.
y
-
b.
y
)
;
u2
=
b.
u
+
(
c.
u
-
b.
u
)
*
(
y
-
b.
y
)
/
(
c.
y
-
b.
y
)
;
v2
=
b.
v
+
(
c.
v
-
b.
v
)
*
(
y
-
b.
y
)
/
(
c.
y
-
b.
y
)
;
}
else
{
x2
=
a.
x
+
(
b.
x
-
a.
x
)
*
(
y
-
a.
y
)
/
(
b.
y
-
a.
y
)
;
u2
=
a.
u
+
(
b.
u
-
a.
u
)
*
(
y
-
a.
y
)
/
(
b.
y
-
a.
y
)
;
v2
=
a.
v
+
(
b.
v
-
a.
v
)
*
(
y
-
a.
y
)
/
(
b.
y
-
a.
y
)
;
}
if
(
x1
>
x2
)
{
x3
=
x1
;
x1
=
x2
;
x2
=
x3
;
u3
=
u1
;
u1
=
u2
;
u2
=
u3
;
v3
=
v1
;
v1
=
v2
;
v2
=
v3
;
}
u
=
u1
;
v
=
v1
;
for
(
x
=
Math.
trunc
(
x1
)
;
x
<=
Math.
trunc
(
x2
)
;
x
++
)
{
// TODO: рисуем пиксель, с координатами x,y, цвет которого соответствует цвету пикселя в текстуре с координатами u,v
dst
[
Math.
trunc
(
y
*
width
+
x
)
]
=
src
[
Math.
trunc
(
u
*
width
+
v
)
]
;
u
+=
du
;
v
+=
dv
;
}
}
}
Всего: 1
К записи
Работа с графикой
Категории
Разделы
Авторские статьи
Вопросы и ответы
Полезные коды
Форум
Гостевая книга
Мы в соцсетях