Сначала берёшь максимальное расстояние между числами и сравниваешь его с высотой экрана GetMaxY, чтобы график поместился полностью в высоту + оставить некоторое пространство для других деталей. Аналогично с шириной графика. Далее, делишь ширину на кол-во найденных простых чисел, чтобы узнать зазор между каждым.
Код | MX - GetMaxX MY - GetMaxY
MarginX - зазор между графиком и экраном по оси X MarginY - зазор между графиком и экраном по оси Y OrigX - начальная координата графика по оси X OrigY - начальная координата графика по оси Y
Height - высота графика Width - ширина графика WBar - ширина столбика (допустим, 10) Step - зазор между столбиками MaxDist - макс. растояние между простыми числами (собственно, высота столбика) ScaleY - масштаб высоты столбика |
Код | //определение начала координат графика OrigX := (MX - 2 * MarginX) div 2; OrigY := (MY - 2 * MarginY) div 2;
Step := (Width - WBar * PrimeCount) div (PrimeCount - 1); ScaleY := Height div MaxDist;
For k := 1 to PrimeCount do begin BarHeight := ScaleY * Distance[k]; DrawBar (BarHeight, k); // рисуешь к-тый столбик высотой BarHeight. Позицию вычисли сам end; |
Надеюсь, разъяснил более (менее?) понятно. :cool |