Нужно, чтобы на системе координат откладывалась точка, соответствующая определенному цвету - 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

Объяснение кода листинга программы

  1. Задана задача по кодированию цвета на системе координат.
  2. Использован язык программирования QBasic.
  3. Код содержит объявление и инициализацию трех массивов: r%, g% и b%, каждый размером 151х151.
  4. Заданы начальные координаты точки (x,y) = (75,70).
  5. Задана ширина области (s) = 100.
  6. Вычислены размеры области в пикселях (h1 и h2).
  7. Запущен цикл, который проходит по всем пикселям области с заданными координатами (x-s/2..x+s/2; y-(h2+2habs(x-i)/s)..y+h1).
  8. Для каждого пикселя вычисляются значения цветов (br, v, p) по формулам, связанным с расстоянием от центра области до пикселя и от пикселя до наблюдателя.
  9. Цвет пикселя (r,g,b) вычисляется по формуле (c1+c2+c3)/3, где c1,c2,c3 - значения цветов, вычисленные на предыдущем шаге.
  10. Полученные значения цветов (r,g,b) записываются в соответствующие массивы.
  11. Закрывается область, открытая для записи данных.
  12. Открывается файл ColTri.bmp для записи данных.
  13. Записываются заголовки файла.
  14. Записываются данные о цветах пикселей в файл.
  15. Файл закрывается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.5 из 5
Похожие ответы