Author Topic: цвет мужду двумя точками  (Read 2714 times)

0 Members and 1 Guest are viewing this topic.

Piano GX

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
цвет мужду двумя точками
« on: March 05, 2016, 04:28:45 PM »
Можно ли провести прямую между двуямя найденными точками,  найти нужный пиксель на этой прямой?

Кликермен

  • Активный участник
  • ***
  • Posts: 112
    • View Profile
Re: цвет мужду двумя точками
« Reply #1 on: March 05, 2016, 04:53:12 PM »
вот тебе ссылка, на уравнение прямой. проверяешь все точки по этому уравнению +- вниз/вверх на соответствие с твоим цветом
http://ru.onlinemschool.com/math/library/analytic_geometry/line/

Piano GX

  • Освоившийся
  • **
  • Posts: 36
    • View Profile
Re: цвет мужду двумя точками
« Reply #2 on: March 05, 2016, 05:16:07 PM »
через if-pixel-in  находит 2 точки, и ищет на это прямой черный пиксел. если его нет то выполняется действие

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: цвет мужду двумя точками
« Reply #3 on: March 06, 2016, 12:17:54 AM »
за основу взят скрипт Vint'a "плавное перемещение мыши в координаты" из http://crapware.aidf.org/forum/index.php?topic=1147.msg5166#msg5166
Code: (clickermann) [Select]
SUB(pxl_online,$x1_line,$y1_line,$x2_line,$y2_line,$color_line)
   $dist_line = DIST($x2_line,$y2_line,$x1_line,$y1_line)
   $step_line=$dist_line-1
   $X_step = ($x2_line-$x1_line)/$step_line
   $Y_step = ($y2_line-$y1_line)/$step_line
   $X_line = $x1_line
   $Y_line = $y1_line
   FOR($i=0, $i<INT($step_line))
      $X_line = $X_line + $X_step
      $Y_line = $Y_line + $Y_step
      IF(pxl(ROUND($X_line,0), ROUND($Y_line,0)) = $color_line)
         arrpush($pxl_arr, ROUND($X_line,0))
         arrpush($pxl_arr, ROUND($Y_line,0))
      END_IF
      WAITMS(1)
   END_CYC
END_SUB
//----------------------------------------------

GETSCREEN
pxl_online($x1,$y1,$x2,$y2,$color)
//вызов с параметрами $x1,$y1 - точка 1, $x2,$y2 - точка 2, $color - искомый цвет

// получаем массив с координатами всех найденных пикселей в линии между двумя точками
IF(ARRSIZE ($pxl_arr)>0)
   FOR($a=0,$a<ARRSIZE ($pxl_arr),2)
      print($pxl_arr[$a],", ",$pxl_arr[$a+1])
   END_CYC
ELSE
   print("не найдено")
END_IF

halt

если сложно, то вот попроще
Code: (clickermann) [Select]
SUB(pxl_online,$x1_line,$y1_line,$x2_line,$y2_line,$color_line)
   $dist_line = DIST($x2_line,$y2_line,$x1_line,$y1_line)
   $step_line=$dist_line-1
   $X_step = ($x2_line-$x1_line)/$step_line
   $Y_step = ($y2_line-$y1_line)/$step_line
   $X_line = $x1_line
   $Y_line = $y1_line
   $check_pxl=0
   FOR($i=0, $i<INT($step_line))
      $X_line = $X_line + $X_step
      $Y_line = $Y_line + $Y_step
      IF(pxl(ROUND($X_line,0), ROUND($Y_line,0)) = $color_line)
         $check_pxl=1
         $i=INT($step_line)
      END_IF
      WAITMS(1)
   END_CYC
END_SUB
//----------------------------------------------

GETSCREEN
pxl_online($x1,$y1,$x2,$y2,$color)
//вызов с параметрами $x1,$y1 - точка 1, $x2,$y2 - точка 2, $color - искомый цвет

//получаем переменную $check_pxl. если она равна 1, то в линии есть искомый пиксель. если 0 , то нету.
IF($check_pxl=1)
   print("пиксель есть")
ELSE
   print("пикселя нету")
END_IF

halt

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: цвет мужду двумя точками
« Reply #4 on: March 07, 2016, 01:59:18 PM »
через if-pixel-in  находит 2 точки, и ищет на это прямой черный пиксел. если его нет то выполняется действие
проверяешь на припятствия в TZ при стрельбе?
Уравнение прямой.
Скажу сразу, этого мало.