Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел. |
Математика в программировании |
Философия, технологии, алгоритмы! |
|
|
Опции темы |
12.01.2004, 11:38 | #31 |
Форумец
Сообщений: 1,735
Регистрация: 04.10.2003
Не в сети |
zss_vrn
Вот собственно подумалось: математика она же не ради самой себя развивалась, так? А вроде как для решения насущных задач. Только вот задачи в основном такие, что в полном объеме она не нужна. Нужна далеко не в полном. Но то, что ее можно и порой нужно использовать для решения самых разнообразных задач это факт. |
12.01.2004, 12:02 | #32 |
Форумец
Сообщений: 2,045
Регистрация: 27.08.2003
Не в сети |
maximk
Ну да, она - инструмент. Собственно, прежде чем ченть напрограммировать, надо формализовать задачу - по большому счету, описать ее на мат. языке. Щас UML очень полезен. Интересно, UML - это математика или нет? |
12.01.2004, 13:16 | #33 |
Форумец
Сообщений: 1,696
Регистрация: 24.11.2002
Возраст: 39
Не в сети |
Математикой описывается почти всё стороны нашего существования, о программировании и говорить не приходиться, а говорить можно бесконечно.
Лучше приведите конкретные случаи, из вашей практики, где вам понадобилась математика. |
12.01.2004, 22:30 | #38 |
Форумец
Сообщений: 1,696
Регистрация: 24.11.2002
Возраст: 39
Не в сети |
mike_s
всяко разно. размытие, наложение, повороты, векторизация(это правда так и не закончил), фильтры по цветам и т.д., яркости/контрасты. Короче, чего только не я там не делал. Скучно. Манипулировать составляющими цвет байтами это не матиматика. Чтобы размыть картинку даже в школу ходить не надо, достаточно знать что такое среднее арифмитическое Впрочем матрицы заюзать полезно.. векторизация Это я так понимаю преобразование растровой картинки в набор вершин описывающих векторный рисунок ? |
12.01.2004, 23:35 | #39 |
Gross
|
LSL Большинство таких эффектов используют довольно сложную математику (интегральные преобразования, матричные операции, квантование и прочее). Все цветовые фильтры используют довльно сложную математику.
Еще недавно столкнулся с теорией вероятности в решении банальной задачи поиска в подстроке. |
13.01.2004, 07:28 | #41 |
Форумец
Сообщений: 5,001
Регистрация: 08.04.2003
Возраст: 40
Не в сети |
LSL
Некоторые ты за полчаса просто прочитать не успеешь . Кроме того одно дело понять и совсем другое написать . Grossmeister Еще недавно столкнулся с теорией вероятности в решении банальной задачи поиска в подстроке. Угу . знаем , .5 на .5 либо найдеш либо нет. |
13.01.2004, 08:14 | #42 | |
Форумец
Сообщений: 1,735
Регистрация: 04.10.2003
Не в сети |
Цитата:
Кстати, среднее арифметическое - это не настоящее размытие. А про матрицы... а как ты думаешь, откуда коэфф. этой матрицы беруться? Оооо! Чтобы строго доказать откуда они, нужно много чего знать... |
|
13.01.2004, 16:37 | #43 |
Форумец
Сообщений: 1,696
Регистрация: 24.11.2002
Возраст: 39
Не в сети |
maximk Да ты прав... если глубоко копать, то можно глубоко уйти в землю.
И не вернутся zic Некоторые ты за полчаса просто прочитать не успеешь . Это на C++ Вот код: Размытие, и гауссовское размытие Код:
public static bool Smooth(Bitmap b, int nWeight) { ConvMatrix m = new ConvMatrix(); m.SetAll(1); m.Pixel = nWeight; m.Factor = nWeight + 8; return BitmapFilter.Conv3x3(b, m); } public static bool GaussianBlur(Bitmap b, int nWeight) { ConvMatrix m = new ConvMatrix(); m.SetAll(1); m.Pixel = nWeight; m.TopMid = m.MidLeft = m.MidRight = m.BottomMid = 2; m.Factor = nWeight + 12; return BitmapFilter.Conv3x3(b, m); } public class ConvMatrix { public int TopLeft = 0, TopMid = 0, TopRight = 0; public int MidLeft = 0, Pixel = 1, MidRight = 0; public int BottomLeft = 0, BottomMid = 0, BottomRight = 0; public int Factor = 1; public int Offset = 0; public void SetAll(int nVal) { TopLeft = TopMid = TopRight = MidLeft = Pixel = MidRight = BottomLeft = BottomMid = BottomRight = nVal; } } public static bool Conv3x3(Bitmap b, ConvMatrix m) { if (0 == m.Factor) return false; Bitmap bSrc = (Bitmap)b.Clone(); BitmapData bmData = b.LockBits(new Rectangle(0, 0, b.Width, b.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); BitmapData bmSrc = bSrc.LockBits(new Rectangle(0, 0, bSrc.Width, bSrc.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); int stride = bmData.Stride; int stride2 = stride * 2; System.IntPtr Scan0 = bmData.Scan0; System.IntPtr SrcScan0 = bmSrc.Scan0; unsafe { byte * p = (byte *)(void *)Scan0; byte * pSrc = (byte *)(void *)SrcScan0; int nOffset = stride - b.Width*3; int nWidth = b.Width - 2; int nHeight = b.Height - 2; int nPixel; for(int y=0;y < nHeight;++y) { for(int x=0; x < nWidth; ++x ) { nPixel = ( ( ( (pSrc[2] * m.TopLeft) + (pSrc[5] * m.TopMid) + (pSrc[8] * m.TopRight) + (pSrc[2 + stride] * m.MidLeft) + (pSrc[5 + stride] * m.Pixel) + (pSrc[8 + stride] * m.MidRight) + (pSrc[2 + stride2] * m.BottomLeft) + (pSrc[5 + stride2] * m.BottomMid) + (pSrc[8 + stride2] * m.BottomRight)) / m.Factor) + m.Offset); if (nPixel < 0) nPixel = 0; if (nPixel > 255) nPixel = 255; p[5 + stride]= (byte)nPixel; nPixel = ( ( ( (pSrc[1] * m.TopLeft) + (pSrc[4] * m.TopMid) + (pSrc[7] * m.TopRight) + (pSrc[1 + stride] * m.MidLeft) + (pSrc[4 + stride] * m.Pixel) + (pSrc[7 + stride] * m.MidRight) + (pSrc[1 + stride2] * m.BottomLeft) + (pSrc[4 + stride2] * m.BottomMid) + (pSrc[7 + stride2] * m.BottomRight)) / m.Factor) + m.Offset); if (nPixel < 0) nPixel = 0; if (nPixel > 255) nPixel = 255; p[4 + stride] = (byte)nPixel; nPixel = ( ( ( (pSrc[0] * m.TopLeft) + (pSrc[3] * m.TopMid) + (pSrc[6] * m.TopRight) + (pSrc[0 + stride] * m.MidLeft) + (pSrc[3 + stride] * m.Pixel) + (pSrc[6 + stride] * m.MidRight) + (pSrc[0 + stride2] * m.BottomLeft) + (pSrc[3 + stride2] * m.BottomMid) + (pSrc[6 + stride2] * m.BottomRight)) / m.Factor) + m.Offset); if (nPixel < 0) nPixel = 0; if (nPixel > 255) nPixel = 255; p[3 + stride] = (byte)nPixel; p += 3; pSrc += 3; } p += nOffset; pSrc += nOffset; } } b.UnlockBits(bmData); bSrc.UnlockBits(bmSrc); return true; } |
13.01.2004, 21:22 | #44 |
Gross
|
LSL А ты можешь привести формулы, которые реализует этот алгоритм?
|
15.01.2004, 17:43 | #46 |
ЕвГений
Сообщений: 497
Регистрация: 14.11.2003
Возраст: 41
Не в сети |
Кроме логики ничего не нужно.
|
16.01.2004, 09:50 | #47 | |
ЕвГений
Сообщений: 497
Регистрация: 14.11.2003
Возраст: 41
Не в сети |
Sheriff
Цитата:
1. Эти знания не забываются. 2. Добывая одно знание, попутно преобретаешь 10 новых. |
|
16.01.2004, 11:00 | #49 |
ЕвГений
Сообщений: 497
Регистрация: 14.11.2003
Возраст: 41
Не в сети |
zic Я с 8 класса самостоятельно учусь и стараюсь все сдавать экстерном.
Не беру в расчет графику (не работал), а остальные отрасли помоему знания высшей математики от меня не требуют. Даже если мне надо написать прогу со сложными расчетами, то заказчик даст формулы, по которым все будет считаться. |