nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 09:10



Reply to topic  [ 139 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6 ... 10  Next
Смерть Жабы 
Author Message
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Post 
Lavr wrote:
Shaos wrote:
проще заново написать, причём на чём угодно :)
есть такая штука - фиксированная точка

Да писать-то я без вопросов буду заново... но вот на чем угодно - не могу...
На сотовом у меня j2me cldc 1.1 midp 1.0 - в ней только целые в math.
В этом и суть вопроса.

Даже на z80 - я бы ни у кого спрашивать не стал...

А тут весь вопрос в том, чтобы посчитать "без дробей" и любых точек...
И привлекать библиотеку (а она есть) для "дробей" хотелось бы избежать...


А в фиксированной точке нет дробей :)
Там только сложение с вычитанием да побитовые сдвиги...

_________________
:dj: https://mastodon.social/@Shaos


10 Aug 2012 19:47
Profile WWW
Senior

Joined: 07 Aug 2006 10:18
Posts: 185
Reply with quote
Post 
Lavr wrote:
Так может все дробные - умножаем, к примеру, на 1000, считаем в целых, результат -
делим на 1000 и - на экран? А?
Описанное тобою -- это велосипед, под названием "fixed point", или фиксированная запятая(точка). Только умножают и делят, обычно на степень двойки, чтобы умножения и деления можно было бы заменить сдвигами. =)


10 Aug 2012 21:28
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Lavr wrote:
Shaos вопрос вот такой...
Как ты думаешь - вот этот апплет можно повторить только в целочисленной арифметике?

Shaos wrote:
А в фиксированной точке нет дробей :)
Там только сложение с вычитанием да побитовые сдвиги...

Ярослав Гашек wrote:
- Вы говорите, как будейовицкий жестяник Покорный. - твердил Швейк.
Тот, когда его спрашивали: "Купались ли вы в этом году в Мальше?" - отвечал: "Не купался, но зато в этом году будет хороший урожай слив".
А когда его спрашивали: "Вы уже ели в этом году грибы?" - он отвечал: "Не ел, но зато новый марокканский султан, говорят, весьма достойный человек".

_________________
iLavr


11 Aug 2012 06:48
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Post 
Shaos wrote:
Я не сумлевался, что оракла рано или поздно умертвит жабёнка и это время уже близко


Lavr wrote:
Как ты думаешь - вот этот апплет можно повторить только в целочисленной арифметике?

_________________
:dj: https://mastodon.social/@Shaos


11 Aug 2012 09:41
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Shaos wrote:
Shaos wrote:
Я не сумлевался, что оракла рано или поздно умертвит жабёнка и это время уже близко


Lavr wrote:
Как ты думаешь - вот этот апплет можно повторить только в целочисленной арифметике?

не так... не выдергивай фразы...
Lavr wrote:
вопрос вот такой... серьёзный... пока Жаба ещё не умерла... :-?
Как ты думаешь - вот этот апплет можно повторить только в целочисленной арифметике?

А Жаба ещё многих переживет... :-?

_________________
iLavr


11 Aug 2012 09:45
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Post 
Lavr wrote:
Shaos wrote:
Shaos wrote:
Я не сумлевался, что оракла рано или поздно умертвит жабёнка и это время уже близко


Lavr wrote:
Как ты думаешь - вот этот апплет можно повторить только в целочисленной арифметике?

не так... не выдергивай фразы...
Lavr wrote:
вопрос вот такой... серьёзный... пока Жаба ещё не умерла... :-?
Как ты думаешь - вот этот апплет можно повторить только в целочисленной арифметике?

А Жаба ещё многих переживет... :-?


ну ты тоже пропустил пару фраз в нашем диалоге :roll:

_________________
:dj: https://mastodon.social/@Shaos


11 Aug 2012 09:49
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Shaos wrote:
ну ты тоже пропустил пару фраз в нашем диалоге :roll:

А они не по делу: не по вопросу, и не по теме топика здесь...
Какое мне дело до твоих отношений с множество Мандельброта и Z80 лет десять назад,
тем более в топике про Жабу? :roll:

Не продолжай... я решил проблему без излишней болтовни.

_________________
iLavr


11 Aug 2012 09:58
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Post 
Lavr wrote:
Shaos wrote:
ну ты тоже пропустил пару фраз в нашем диалоге :roll:

А они не по делу: не по вопросу, и не по теме топика здесь...
Какое мне дело до твоих отношений с множество Мандельброта и Z80 лет десять назад,
тем более в топике про Жабу? :roll:


дык ты сам начал про фиксированную точку - вот я тебе и привёл пример где она юзабельна...

Lavr wrote:
Так может все дробные - умножаем, к примеру, на 1000, считаем в целых, результат - делим на 1000 и - на экран? А?


P.S. если ты ещё не понял то что ты описал она и есть (фиксированная точка), только не на 1000 надо умножать-делить, а на 1024 т.к. это умножение/деление легко заменяется на побитовый сдвиг - как правильно указал bar это работает для всех степеней двойки...

_________________
:dj: https://mastodon.social/@Shaos


11 Aug 2012 11:50
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Shaos wrote:
если ты ещё не понял то что ты описал она и есть (фиксированная точка), только не на 1000 надо умножать-делить, а на 1024 т.к. это умножение/деление легко заменяется на побитовый сдвиг - как правильно указал bar это работает для всех степеней двойки...

Я давно всё понял, поскольку я сам так считал синус в целых числах...
И вовсе не обязательно на 1024... я на 65536 умножал...
Я только не пойму зачем ты мне объясняешь, что я сам и предложил... :lol:

От гуру по Джабе я предполагал другой ответ на простой вопрос:
Lavr wrote:
Как ты думаешь - вот этот апплет можно повторить только в целочисленной арифметике?

1) да - можно. Попробуй вот так...
2) нет - не стоит выделки (потому что...)

Всё остальное - словоблудие, которое тем более не нужно сейчас, поскольку я и без объяснений
просто попробовал и сделал...

"Ложка от гуру" хороша к обеду, когда сомневаешься, делать так, или гуру подскажут тебе -
нет, есть вариант гораздо лучше...

_________________
iLavr


Last edited by Lavr on 11 Aug 2012 14:42, edited 2 times in total.



11 Aug 2012 12:16
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Post 
Ну покажи чтоли что получилось ;)
Картинку хотя бы...

_________________
:dj: https://mastodon.social/@Shaos


11 Aug 2012 12:26
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Да без проблем... на - смотри:

Image

Или ты синус хотел посмотреть?

Синус тоже недалеко был, чтобы тебе 2 раза не просить:

Image

Собственно сам синус реализован вот так:

Code:
public class fn
{
 //----------- int 65535*Sin(w) (w - в градусах 0-359)
public static int tabSin[] = {
0, 1143, 2287, 3429, 4571, 5711, 6850, 7986, 9120, 10251,
11380, 12504, 13625, 14742, 15854, 16961, 18063, 19160, 20251, 21336,
22414, 23485, 24549, 25606, 26655, 27696, 28728, 29752, 30766, 31771,
32767, 33753, 34728, 35692, 36646, 37589, 38520, 39439, 40347, 41242,
42125, 42994, 43851, 44694, 45524, 46340, 47141, 47929, 48701, 49459,
50202, 50930, 51642, 52338, 53018, 53683, 54330, 54962, 55576, 56174,
56754, 57318, 57863, 58392, 58902, 59394, 59869, 60325, 60762, 61182,
61582, 61964, 62327, 62671, 62996, 63301, 63588, 63855, 64102, 64330,
64539, 64728, 64897, 65046, 65175, 65285, 65375, 65445, 65495, 65525,
65534, 65525, 65495, 65445, 65375, 65285, 65175, 65046, 64897, 64728,
64539, 64330, 64102, 63855, 63588, 63301, 62996, 62671, 62327, 61964,
61582, 61182, 60762, 60325, 59869, 59394, 58902, 58392, 57863, 57318,
56754, 56174, 55576, 54962, 54330, 53683, 53018, 52338, 51642, 50930,
50202, 49459, 48701, 47929, 47141, 46340, 45524, 44694, 43851, 42994,
42125, 41242, 40347, 39439, 38520, 37589, 36646, 35692, 34728, 33753,
32767, 31772, 30766, 29752, 28728, 27696, 26655, 25606, 24549, 23485,
22414, 21336, 20251, 19160, 18063, 16961, 15854, 14742, 13625, 12504,
11380, 10251, 9120, 7986, 6850, 5711, 4571, 3429, 2287, 1143,
0, -1143, -2287, -3429, -4571, -5711, -6850, -7986, -9120, -10251,
-11380, -12504, -13625, -14742, -15854, -16961, -18063, -19160, -20251, -21336,
-22414, -23485, -24549, -25606, -26655, -27696, -28728, -29752, -30766, -31771,
-32767, -33753, -34728, -35692, -36646, -37589, -38520, -39439, -40347, -41242,
-42125, -42994, -43851, -44694, -45524, -46340, -47141, -47929, -48701, -49459,
-50202, -50930, -51642, -52338, -53018, -53683, -54330, -54962, -55576, -56174,
-56754, -57318, -57863, -58392, -58902, -59394, -59869, -60325, -60762, -61182,
-61582, -61964, -62327, -62671, -62996, -63301, -63588, -63855, -64102, -64330,
-64539, -64728, -64897, -65046, -65175, -65285, -65375, -65445, -65495, -65525,
-65534, -65525, -65495, -65445, -65375, -65285, -65175, -65046, -64897, -64728,
-64539, -64330, -64102, -63855, -63588, -63301, -62996, -62671, -62327, -61964,
-61582, -61182, -60762, -60325, -59869, -59394, -58902, -58392, -57863, -57318,
-56754, -56174, -55576, -54962, -54330, -53683, -53018, -52338, -51642, -50930,
-50202, -49459, -48702, -47929, -47141, -46340, -45524, -44694, -43851, -42994,
-42125, -41242, -40347, -39439, -38520, -37589, -36646, -35692, -34728, -33753,
-32767, -31772, -30766, -29752, -28728, -27696, -26655, -25606, -24549, -23485,
-22414, -21336, -20251, -19160, -18063, -16961, -15854, -14742, -13625, -12504,
-11380, -10251, -9120, -7986, -6850, -5711, -4571, -3429, -2287, -1143
 };

 //----------- int 65535*Cos(w) (w - в градусах 0-359)
public static int tabCos[] = {
65535, 65525, 65495, 65445, 65375, 65285, 65175, 65046, 64897, 64728,
64539, 64330, 64102, 63855, 63588, 63301, 62996, 62671, 62327, 61964,
61582, 61182, 60762, 60325, 59869, 59394, 58902, 58392, 57863, 57318,
56754, 56174, 55576, 54962, 54330, 53683, 53018, 52338, 51642, 50930,
50202, 49459, 48701, 47929, 47141, 46340, 45524, 44694, 43851, 42994,
42125, 41242, 40347, 39439, 38520, 37589, 36646, 35692, 34728, 33753,
32767, 31771, 30766, 29752, 28728, 27696, 26655, 25606, 24549, 23485,
22414, 21336, 20251, 19160, 18063, 16961, 15854, 14742, 13625, 12504,
11380, 10251, 9120, 7986, 6850, 5711, 4571, 3429, 2287, 1143,
0, -1143, -2287, -3429, -4571, -5711, -6850, -7986, -9120, -10251,
-11380, -12504, -13625, -14742, -15854, -16961, -18063, -19160, -20251, -21336,
-22414, -23485, -24549, -25606, -26655, -27696, -28728, -29752, -30766, -31771,
-32767, -33753, -34728, -35692, -36646, -37589, -38520, -39439, -40347, -41242,
-42125, -42994, -43851, -44694, -45524, -46340, -47141, -47929, -48701, -49459,
-50202, -50930, -51642, -52338, -53018, -53683, -54330, -54962, -55576, -56174,
-56754, -57318, -57863, -58392, -58902, -59394, -59869, -60325, -60762, -61182,
-61582, -61964, -62327, -62671, -62996, -63301, -63588, -63855, -64102, -64330,
-64539, -64728, -64897, -65046, -65175, -65285, -65375, -65445, -65495, -65525,
-65534, -65525, -65495, -65445, -65375, -65285, -65175, -65046, -64897, -64728,
-64539, -64330, -64102, -63855, -63588, -63301, -62996, -62671, -62327, -61964,
-61582, -61182, -60762, -60325, -59869, -59394, -58902, -58392, -57863, -57318,
-56754, -56174, -55576, -54962, -54330, -53683, -53018, -52338, -51642, -50930,
-50202, -49459, -48701, -47929, -47141, -46340, -45524, -44694, -43851, -42994,
-42125, -41242, -40347, -39439, -38520, -37589, -36646, -35692, -34728, -33753,
-32767, -31772, -30766, -29752, -28728, -27696, -26655, -25606, -24549, -23485,
-22414, -21336, -20251, -19160, -18063, -16961, -15854, -14742, -13625, -12504,
-11380, -10251, -9120, -7986, -6850, -5711, -4571, -3429, -2287, -1143,
0, 1143, 2287, 3429, 4571, 5711, 6850, 7986, 9120, 10251,
11380, 12504, 13625, 14742, 15854, 16961, 18063, 19160, 20251, 21336,
22414, 23485, 24549, 25606, 26655, 27696, 28728, 29752, 30766, 31771,
32767, 33753, 34728, 35692, 36646, 37589, 38520, 39439, 40347, 41242,
42125, 42994, 43851, 44694, 45524, 46340, 47141, 47929, 48701, 49459,
50202, 50930, 51642, 52338, 53018, 53683, 54330, 54962, 55576, 56174,
56754, 57318, 57863, 58392, 58902, 59394, 59869, 60325, 60762, 61182,
61582, 61964, 62327, 62671, 62996, 63301, 63588, 63855, 64102, 64330,
64539, 64728, 64897, 65046, 65175, 65285, 65375, 65445, 65495, 65525
 };
     // - конструктор -
    public fn()
    {
    }
//--------------- вычисление int Sin
    public static int tSin(int ygol) // - в градусах.
    {
     int arg = ygol;
     if (arg < 360)
      {
       return tabSin[arg];
      }
      else
         {
          arg %= 360; // Оператор деления по модулю возвращает остаток
                      // от деления первого операнда на второй
          return tabSin[arg];
         }
    }
//--------------- вычисление int Cos
    public static int tCos(int ygol) // - в градусах.
    {
     int arg = ygol;
     if (arg < 360)
      {
       return tabCos[arg];
      }
      else
         {
          arg %= 360; // Оператор деления по модулю возвращает остаток
                      // от деления первого операнда на второй
          return tabCos[arg];
         }
    }
 }


Вызывается табличный синус вот так:
Code:
// конструктор класса
public MyCanvas() {
  mathFun = new fn();

...
      //---------------------------------------------------
      // если нет функции SIN - то...
      // берем значение по таблице

        arg = (angle + movx)/1000;  // ошибка на длине экрана накапливается !
      int z = mathFun.tSin(arg);

      // System.out.println(" Sin(z) = "+z+"; z = "+angle); // это проверка значений

      // вычислить значение у по формуле
       int m = (amp * z) >> 16;

И если на предыдущем рисунке тебе синус маловатым будет, вот - покрупнее:

Image

_________________
iLavr


11 Aug 2012 12:51
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Post 
дык лоренца на телефоне то запустил хоть?

_________________
:dj: https://mastodon.social/@Shaos


11 Aug 2012 20:56
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Shaos wrote:
дык лоренца на телефоне то запустил хоть?

Да нет - только систему 3-х дифур в целочисленную арифметику перевёл...

Я лоренца и не буду в мобильник совать.

Немножко другая идея у меня, лоренц просто под руку попался как самый
доступный в инете объект... :wink:

_________________
iLavr


11 Aug 2012 21:14
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Lavr wrote:
Да нет - только систему 3-х дифур в целочисленную арифметику перевёл...

А что-то меня вдруг поклинило там, где я не ожидал... :o
На 3-Де выводе графика! :lol: Глаз зацепился за формулу и вдруг подумалось:
"а что-то формула неправильная... нет синуса и косинуса..." :o

Думал быстро разберусь... ан нет! Поиск в инете говорит, что без ОупенГЛ,
ДиректХе, или левых длл никто изометрию на канве строить и не умеет! :roll:

Ну слава богу умные люди не перевелись... :lol:
Keith Peters wrote:
А сейчас я вам открою страшный секрет: почти каждая игра, движок, рисунок, которые названы изометрическим, таковыми на самом деле не являются; они являются диметрическими, т.е. между тремя осями равны между собой только два угла (см рисунок 5).

Image
Здесь мы берем координаты x, y, z точки трехмерного пространства и вычисляем координаты sX и sY, которые определяют эту же точку на экране. Эти выражения представляют вращение точки вокруг оси у на 45 градусов и вокруг оси х на – 30 градусов.
Когда мы упростим наши выражения, мы получим следущее:

1 sx = x - z;
2 sy = y * 1.2247 + (x + z) * 0.5;


Некоторые реализации опускают значение 1.2247 и представляю координаты следующим образом:

1 x1 = x – z;
2 y1 = y + (x + z) * 0.5;


Это прекрасно работает, когда все объекты на сцене равны между собой по высоте. Кроме того, в простых системах все объекты находятся на одном уровне, поэтому у = 0 и его можно тоже опустить, тогда выражения примут следующий вид.

1 x1 = x – z;
2 y1 = (x + z) * 0.5;



Вот так! :o Иногда не надо излишне задумываться! А то случится, как с ёжиком
из анекдота, который "шел-шел, забыл как дышать и умер!" :D

_________________
iLavr


13 Aug 2012 00:25
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Post 
А между тем Firefox начал настоятельно рекомендовать своим юзерам отключить Java-плугин от шестой жабы...

_________________
:dj: https://mastodon.social/@Shaos


15 Aug 2012 16:19
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 139 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6 ... 10  Next

Who is online

Users browsing this forum: No registered users and 16 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.