15.01.2016 / 20:09 | |
NaruTrey Пользователь Сейчас: Offline
Имя: Андрей K. Откуда: Тольятти Регистрация: 15.01.2010
| Цитата mrEDitor: a * ∑(1/i) - 1А почему - 1?
__________________
Чёрные усы кричает этот свисть Изменено NaruTrey (15.01 / 20:09) (всего 1 раз) |
15.01.2016 / 20:32 | |
NaruTrey Пользователь Сейчас: Offline
Имя: Андрей K. Откуда: Тольятти Регистрация: 15.01.2010
| Цитата mrEDitor: думаю, скорее стоит его назвать в соответствии с его применением в приложенииО да… gdouble zvizdecKakayaZaumnayaFunctionAnnimonovciKotoroiNeSmogliDatNazvanie(guchar n, gdouble r) {
gdouble e = 0;
for (guchar i = 1; i <= n; ++i) {
e += r / i;
}
return e;
}
А использование в проекте как-то так: gdouble aX = zvizdecKakayaZaumnayaFunctionAnnimonovciKotoroiNeSmogliDatNazvanie(log2(editor->scaleView), (event->scroll.x * editor->scaleView - gtk_adjustment_get_value(horizontalAdjustment)) / editor->scaleView);
__________________
Чёрные усы кричает этот свисть |
15.01.2016 / 20:49 | |
Freddy Пользователь Сейчас: Offline
Имя: Игорь Откуда: Воронеж Регистрация: 30.01.2010
| https://pp.vk.me/c543100/v543100974/117f5/grk3oyqBY0Q.jpgNaruTrey, я бы имена в camelCase стиле в GTK приложении поостерёгся использовать =) P. S. имхо, тут такой случай, что комментарий, что считает функция, был бы понятнее. Изменено Freddy (15.01 / 20:54) (всего 1 раз) |
15.01.2016 / 20:52 | |
NaruTrey Пользователь Сейчас: Offline
Имя: Андрей K. Откуда: Тольятти Регистрация: 15.01.2010
| Цитата Freddy: я бы имена в camelCase стиле в GTK приложении поостерёгся использовать =)Я тоже об этом думал, но ничто не могу с собой поделать, просто не могу использовать подчёркивания в названий функций. От Java такая привычка.
__________________
Чёрные усы кричает этот свисть |
15.01.2016 / 21:57 | |
Ксакеп Модератор форума Сейчас: Offline
Регистрация: 20.06.2012
| NaruTrey, придётся изменить свои привычки. // c * ∑(1/i), i = 1…n
gdouble finiteSeries(guchar n, gdouble с)
|
16.01.2016 / 00:16 | |
mrEDitor Пользователь Сейчас: Offline
Имя: Эдуард Откуда: Новороссийск » Таганрог Регистрация: 13.03.2011
| Цитата NaruTrey: А почему - 1?А, это не минус один, это ты вот тут Цитата NaruTrey: Ксакеп, гармонический ряд это double f(unsigned int n) {
double r = 1.;
лишней единицей меня сбил с толку. Цитата NaruTrey: О да…gdouble aX = zvizdecKakayaZaumnayaFunctionAnnimonovciKotoroiNeSmogliDatNazvanie(log2(editor->scaleView), (event->scroll.x * editor->scaleView - gtk_adjustment_get_value(horizontalAdjustment)) / editor->scaleView);
aX_for_scale_level(...)? Ну, и комментарий тоже не повредит. Изменено mrEDitor (16.01 / 00:26) (всего 2 раза) |
16.01.2016 / 08:27 | |
Oak Пользователь Сейчас: Offline
Имя: Коля Откуда: Москва Регистрация: 02.06.2010
| NaruTrey, scale_function?
__________________
Эль Презеденте |
16.01.2016 / 08:58 | |
NaruTrey Пользователь Сейчас: Offline
Имя: Андрей K. Откуда: Тольятти Регистрация: 15.01.2010
| Цитата mrEDitor: ты вот тут лишней единицей меня сбил с толку. Там был просто пример гармонического ряда 1 + 1/2 + 1/3 ... Это не совсем то, что мне нужно.
__________________
Чёрные усы кричает этот свисть Изменено NaruTrey (16.01 / 09:00) (всего 1 раз) |
16.01.2016 / 09:18 | |
Jahak Пользователь Сейчас: Offline
Имя: Константин Регистрация: 16.01.2012
| Цитата NaruTrey: Понадобилось написать подобную функцию.double f(unsigned char n, double a) { double r = 0.; for (unsigned char i = 1; i <= n; ++i) { r += a / i; } return r;
Я в математике не силен, скажи для чего тебе понадобилась такая функция? Просто очень интересно |
16.01.2016 / 10:11 | |
NaruTrey Пользователь Сейчас: Offline
Имя: Андрей K. Откуда: Тольятти Регистрация: 15.01.2010
| Jahak, подгон скроллинга виджета при смене его масштаба. Полный код функций Полный код функций gboolean scrolleventEditor(GtkWidget *widget, GdkEvent *event, gpointer user_data) {
Editor *editor = (Editor*) user_data;
if (!editor->isViewScrollable) {
printf("Editor: Подключен сигнал scroll-event к GtkScrolledWindow, не выдвигая флаг editor->isViewScrollable. НЕПОРЯДОК\n");
return TRUE;
}
GtkAdjustment *horizontalAdjustment = gtk_scrollable_get_hadjustment(GTK_SCROLLABLE(editor->viewport));
GtkAdjustment *verticalAdjustment = gtk_scrollable_get_vadjustment(GTK_SCROLLABLE(editor->viewport));
gfloat aX, aY;
if (event->scroll.direction == GDK_SCROLL_UP
&& editor->scaleView < SCALEVIEW_MAX) {
editor->scaleView *= 2;
aX = zvizdecKakayaZaumnayaFunctionAnnimonovciKotoroiNeSmogliDatNazvanie(log2(editor->scaleView), (event->scroll.x * editor->scaleView -
gtk_adjustment_get_value(horizontalAdjustment)) / editor->scaleView);
aY = zvizdecKakayaZaumnayaFunctionAnnimonovciKotoroiNeSmogliDatNazvanie(log2(editor->scaleView), (event->scroll.y * editor->scaleView -
gtk_adjustment_get_value(verticalAdjustment)) / editor->scaleView);
} else if (event->scroll.direction == GDK_SCROLL_DOWN
&& editor->scaleView > SCALEVIEW_MIN) {
editor->scaleView /= 2;
aX = gtk_adjustment_get_value(horizontalAdjustment) / 2.5;
aY = gtk_adjustment_get_value(verticalAdjustment) / 2.5;
} else return TRUE;
gtk_widget_set_size_request(editor->drawingarea, editor->width * editor->scaleView,
editor->height * editor->scaleView);
gtk_container_check_resize(GTK_CONTAINER(editor->viewport));
gtk_adjustment_set_value(horizontalAdjustment, aX);
gtk_adjustment_set_value(verticalAdjustment, aY);
return TRUE;
}
Моё плохое знание математики к сожалению сказывается на неоптимальности кода aX = …; aY = …; Увы. __________________
Чёрные усы кричает этот свисть |