Нужно, чтобы на системе координат откладывалась точка, соответствующая определенному цвету - QBasic

Узнай цену своей работы

Формулировка задачи:

нужно чтобы на системе координат откладывалась точка соответствующая определенном цвету) система координат- плоскость.. прочитал http://www.hi-edu.ru/e-books/xbook322/01/part-007.htm#i1614 вот это пособие,но так и не разобрался какие формулы нужно использовать.помогите, может кто сталкивался) Спасибо за внимание)

Решение задачи: «Нужно, чтобы на системе координат откладывалась точка, соответствующая определенному цвету»

textual
Листинг программы
  1. DIM r%(0 TO 151, 0 TO 151)
  2. DIM g%(0 TO 151, 0 TO 151)
  3. DIM b%(0 TO 151, 0 TO 151)
  4. x = 75
  5. y = 70
  6. s = 100
  7. h = s * SQR(3) * .5
  8. h1 = s / 2
  9. h2 = h - h1
  10. FOR i = x - s / 2 TO x + s / 2
  11.     FOR j = (y - h2) + 2 * h * ABS(x - i) / s TO y + h1
  12.         br = (1 - SQR((x - s / 2 - i) ^ 2 + (y + h1 - j) ^ 2) / s) * 255
  13.         v = (1 - SQR((x + s / 2 - i) ^ 2 + (y + h1 - j) ^ 2) / s) * 255
  14.         p = (1 - SQR((x - i) ^ 2 + (y - h2 - j) ^ 2) / s) * 255
  15.     '   br = br + 100
  16.     '   p = p + 50
  17.     '   IF p > 255 THEN p = 255
  18.     '   SELECT CASE v
  19.     '       Case 0 TO 102
  20.     '         c3 = 0
  21.     '           c1 = br * (101 - v) / 101
  22.         '    c2 = br - c1
  23.     '       Case 102 TO 203
  24.         '    c1 = 0
  25.         '    c2 = br * (203 - v) / 101
  26.         '    c3 = br - c2
  27.     '      CASE 204 TO 255
  28.         '    c2 = 0
  29.         '    c3 = br * (255 - v) / 51
  30.         '    c1 = br - c3
  31.     '   End SELECT
  32.     '   av = (c1 + c2 + c3) / 3
  33.     '   p = av - (av - c1) * p / 255  'c1
  34.     '   v = av - (av - c2) * p / 255  'c2
  35.     '   br = av - (av - c3) * p / 255 'c3
  36.        r%(i, j) = p
  37.        g%(i, j) = v
  38.        b%(i, j) = br
  39.     NEXT j
  40. NEXT i
  41.  
  42. OPEN "ColTri.bmp" FOR BINARY AS #1
  43. st = 1
  44. DATA 54, 0, 0, 0, 40, 0, 0, 0, 150, 0, 0, 0, 150, 0, 0, 0, 1, 0, 24, 0
  45. t% = ASC("B")
  46. PUT #1, st, t%: st = st + 1
  47. t% = ASC("M")
  48. PUT #1, st, t%: st = st + 1
  49. t% = 0
  50. FOR i = 1 TO 8
  51.     PUT #1, st, t%: st = st + 1
  52. NEXT i
  53. FOR i = 1 TO 20
  54.     READ t%
  55.     PUT #1, st, t%: st = st + 1
  56. NEXT i
  57. t% = 0
  58. FOR i = 1 TO 24
  59.     PUT #1, st, t%: st = st + 1
  60. NEXT i
  61. st=55
  62. FOR j = 1 TO 150
  63.     FOR i = 1 TO 150
  64.         PUT #1, st, b%(i, j)
  65.         PUT #1, st+1, g%(i, j)
  66.         PUT #1, st+2, r%(i, j)
  67.         st=st+3
  68.     NEXT i
  69.     st=st+2
  70. NEXT j
  71. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы