Нужно, чтобы на системе координат откладывалась точка, соответствующая определенному цвету - 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
для записи данных. - Записываются заголовки файла.
- Записываются данные о цветах пикселей в файл.
- Файл закрывается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д