Кресты / Говнокод #559 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
float EllipseSquare(Bitmap bmp, float x, float y, float a, float b) {
	DrawEllipse(bmp, x,y, a, b);
	int n;
	for (int y = 0; y < bmp.height; y++) {
		for (int x = 0; x < bmp.height; x++) {
			if (bmp.GetPixel(x,y).Color == Color(255,255,255)) {
				n++;
			}
                }
	}
	return bmp.GetSquare() * (float) n / (float) (bmp.width * bmp.height);
}

Так считается площадь эллипса: вместо простой геометрической формулы, рисуется эллипс и потом считается какую часть он занял от прямоугольника.

Запостил: guest guest, (Updated )

Комментарии (9) RSS

  • членс:
    ну так это чисто математический интегральный подход
    ололол!!111
    Ответить
  • Капитан Очевидность:
    этого "математика" за такие подходы нужно сразу к стенке ставить 🙂
    Ответить
  • VoidEx:
    Один человек так искал контур вокруг клика на векторном чертеже. Рисовал и по пикселям бегал.
    Ответить
  • (float) n / (float) (bmp.width * bmp.height):
    Пиздец в чистом виде
    Ответить
  • Кажется, во внешнем цикле должно быть bmp.width
    Ответить
  • не, во внутреннем. а вообще можно ускорить, раскрыв цикл =)
    Ответить
  • ЧИЛАВЕК-МАЛЕКЛА:
    [quote=#7 Говногость (Позавчера)]
    Кажется, во внешнем цикле должно быть bmp.width[/quote]

    просто очепятка.
    меня смущает использование ++ для неинициализированной переменной int n.
    Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8