Нужно, чтобы на системе координат откладывалась точка, соответствующая определенному цвету - QBasic
Формулировка задачи:
нужно чтобы на системе координат откладывалась точка соответствующая определенном цвету) система координат- плоскость.. прочитал http://www.hi-edu.ru/e-books/xbook322/01/part-007.htm#i1614 вот это пособие,но так и не разобрался какие формулы нужно использовать.помогите, может кто сталкивался) Спасибо за внимание)
Решение задачи: «Нужно, чтобы на системе координат откладывалась точка, соответствующая определенному цвету»
textual
Листинг программы
DIM r%(0 TO 151, 0 TO 151)
DIM g%(0 TO 151, 0 TO 151)
DIM b%(0 TO 151, 0 TO 151)
x = 75
y = 70
s = 100
h = s * SQR(3) * .5
h1 = s / 2
h2 = h - h1
FOR i = x - s / 2 TO x + s / 2
FOR j = (y - h2) + 2 * h * ABS(x - i) / s TO y + h1
br = (1 - SQR((x - s / 2 - i) ^ 2 + (y + h1 - j) ^ 2) / s) * 255
v = (1 - SQR((x + s / 2 - i) ^ 2 + (y + h1 - j) ^ 2) / s) * 255
p = (1 - SQR((x - i) ^ 2 + (y - h2 - j) ^ 2) / s) * 255
' br = br + 100
' p = p + 50
' IF p > 255 THEN p = 255
' SELECT CASE v
' Case 0 TO 102
' c3 = 0
' c1 = br * (101 - v) / 101
' c2 = br - c1
' Case 102 TO 203
' c1 = 0
' c2 = br * (203 - v) / 101
' c3 = br - c2
' CASE 204 TO 255
' c2 = 0
' c3 = br * (255 - v) / 51
' c1 = br - c3
' End SELECT
' av = (c1 + c2 + c3) / 3
' p = av - (av - c1) * p / 255 'c1
' v = av - (av - c2) * p / 255 'c2
' br = av - (av - c3) * p / 255 'c3
r%(i, j) = p
g%(i, j) = v
b%(i, j) = br
NEXT j
NEXT i
OPEN "ColTri.bmp" FOR BINARY AS #1
st = 1
DATA 54, 0, 0, 0, 40, 0, 0, 0, 150, 0, 0, 0, 150, 0, 0, 0, 1, 0, 24, 0
t% = ASC("B")
PUT #1, st, t%: st = st + 1
t% = ASC("M")
PUT #1, st, t%: st = st + 1
t% = 0
FOR i = 1 TO 8
PUT #1, st, t%: st = st + 1
NEXT i
FOR i = 1 TO 20
READ t%
PUT #1, st, t%: st = st + 1
NEXT i
t% = 0
FOR i = 1 TO 24
PUT #1, st, t%: st = st + 1
NEXT i
st=55
FOR j = 1 TO 150
FOR i = 1 TO 150
PUT #1, st, b%(i, j)
PUT #1, st+1, g%(i, j)
PUT #1, st+2, r%(i, j)
st=st+3
NEXT i
st=st+2
NEXT j
CLOSE #1
Объяснение кода листинга программы
- Задана задача по кодированию цвета на системе координат.
- Использован язык программирования QBasic.
- Код содержит объявление и инициализацию трех массивов: r%, g% и b%, каждый размером 151х151.
- Заданы начальные координаты точки (x,y) = (75,70).
- Задана ширина области (s) = 100.
- Вычислены размеры области в пикселях (h1 и h2).
- Запущен цикл, который проходит по всем пикселям области с заданными координатами (x-s/2..x+s/2; y-(h2+2habs(x-i)/s)..y+h1).
- Для каждого пикселя вычисляются значения цветов (br, v, p) по формулам, связанным с расстоянием от центра области до пикселя и от пикселя до наблюдателя.
- Цвет пикселя (r,g,b) вычисляется по формуле (c1+c2+c3)/3, где c1,c2,c3 - значения цветов, вычисленные на предыдущем шаге.
- Полученные значения цветов (r,g,b) записываются в соответствующие массивы.
- Закрывается область, открытая для записи данных.
- Открывается файл
ColTri.bmpдля записи данных. - Записываются заголовки файла.
- Записываются данные о цветах пикселей в файл.
- Файл закрывается.