Index · Правила · Поиск· Группы · Регистрация · Личные сообщения· Вход

Список разделов Компьютерный раздел
 
 
 

Раздел: Компьютерный раздел Программирование приложений на android 

Создана: 31 Октября 2011 Пон 13:25:33.
Раздел: "Компьютерный раздел"
Сообщений в теме: 223, просмотров: 34679

На страницу: Назад  1, 2, 3,
, 5 ... 13, 14, 15  Вперёд
  1. 31 Октября 2011 Пон 13:25:33
    Набираю желающих в кружок
  2. 29 Декабря 2011 Чтв 15:52:18
    Для того чтобы начертить луч лазера надо иметь две точки. Начальная известна. Как вычислить вторую точку ?

    Для всех лучей и зеркал размещенных на игровом поле можно создать уравнения. И для определения второй точки надо решить эти уравнения на предмет наличия общих решений. Поскольку на пути лазера может встретится несколько зеркал надо выбрать из них самое близкое
  3. 05 Января 2012 Чтв 22:33:23
    Уравнение для луча лазера

    y1 = b1 + (x - a1) / tg alpha

    где b1 y-координата лазера, a1 x-координата лазера, alpha - угол между лучом и осью Y

    У android начало координат находится в левом верхнем углу экрана, то есть ось Y перевернута относительно декартовой системы координат, поэтому величину b1 надо будет преобразовывать по формуле

    b1` = h - b1, где h - высота экрана в пикселах

    Уравнение для зеркала

    y2 = b2 + (x - a2) / tg beta

    Теперь можно найти значение x удовлетворяющее обоим уравнениям. Если оно есть то луч падает на зеркало

    Надо учесть , что функция тангенс имеет невычислительные значения для x равных 90 и 270 градусов. Для того чтобы использовать эти значения будем заменять их на близкие , а именно 89,9 и 269,9

    Имеем для x

    x = ((b1 - b2) tg alpha * tg beta + a2 * tg alpha - a1 * tg beta) / (tg alpha - tg beta)

    Видно что исключается случай когда alpha = beta + 180*n

    Если решение есть то оно проверяется на попадание в интервал

    b2 + d < x < b2 - d

    где d проекция размера зеркала на ось x, деленная пополам
  4. 07 Января 2012 Суб 18:29:59
    Для контактов

    Скайп: erbol gabdullin

    Twitter : ERBOL_G

    Facebook : Эрбол Габдуллин

    Цвела картошка у сарая
    лиловым, белым, голубым...
    Я в детстве так боялась рая,
    где будешь ты любим любым
    и устремят родные души
    к тебе несметные стопы, -
    я пряталась на старой груше...
    ...Я и теперь боюсь толпы.


    Инна Кабыш
  5. 09 Января 2012 Пон 0:16:15
    Архитектура объектов и методов в игре "Лазеры и зеркала"

    Объектов два типа

    1. Статические - не поворачиваются
    2. Динамические - поворачиваются

    Для статических создан класс GameObject. Метод onLaser этого класса принимает значение угла под которым луч лазера падает на объект и возвращает отрицательное значение или угол отраженного луча если это зеркало
  6. 14 Января 2012 Суб 0:33:24
    Вот почитал эту статью - [внешняя ссылка] А именно раздел - "Уравнение прямой по точке и угловому коэффициенту".

    Она значительно упростила мои взгляды на вычисление точки пересечения луча лазера и зеркала

    y1=a1+k1*x1

    y2=a2+k2*x2

    Сначала находим величины a1 и a2. Подставляем вместо x и y координаты центра ячеек в которых находятся лазер и зеркало.

    Для координаты x - точки пересечения луча и зеркала получаем уравнение

    x = (a2-a1)/(ctg alpha - ctg beta)
  7. 14 Января 2012 Суб 14:05:08
    17 "ключей" – один ответ: математики решили судоку на свой лад

    [внешняя ссылка]
  8. 14 Января 2012 Суб 14:08:27
    Новые китайские игрушки будут расширять реальность

    [внешняя ссылка]
  9. 15 Января 2012 Вск 13:44:12
    Как происходит прорисовка лучей в игре "Лазеры и зеркала" ?

    Взаимодействие пользователя с игрой обеспечивает класс GameObjectsControlle. При повороте зеркала или лазера метод onSceneTouchEvent запускает метод run класса LaserUpdater. Тот в свою очередь запускает метод buildLasers класса GameObjectsMap.

    Метод buildLasers класса GameObjectsMap запускает цикл по списку лазеров размещенных на игровом поле, который выполняет для каждого лазера метод buildLaser класса LaserGun

    Код:
       public void buildLaser(GameObject[][] map) {
          mLaserLine.setAngle(getAngle());
          mLaserLine.build(map);
       }


    Метод build

    Код:
       public void build(GameObject[][] map) {
          sBuilder.buildPath(this, map);
          buildLines();
       }


    Метод buildPath класса LaserLineBuilder строит список точек, а метод buildLines() класса LaserLine строит из этих точек линии и размещает их на сцене
  10. 15 Января 2012 Вск 17:01:27
    как поставить тему
  11. 15 Января 2012 Вск 17:15:44
    Иван Елагин

    Гасли тысячи свечек.
    В город вошли, как в морг,
    Мистер Смит — контрразведчик,
    Товарищ Петров — парторг.


    На всех перекрестках мира
    Стоят они по ночам,
    На всех перекрестках мира
    Прислушиваются к речам,


    На всех перекрестках мира
    Готовят переворот,
    На всех перекрестках мира
    Радио их орёт,


    На всех перекрестках мира
    Гуляет их солдатня,
    На всех перекрестках мира
    Они убивают меня.
  12. 15 Января 2012 Вск 18:05:20
    да, но ты же ещё живой! Смайлик :-)
  13. 16 Января 2012 Пон 10:20:17
    Wiki по разработке Android-приложений

    [внешняя ссылка]
  14. 16 Января 2012 Пон 10:32:29
    Как работать с камерой? На хтс сенсэйшн запись видео в фул эйч ди, но сохраняется в формате 3гп, поэтому качество такого фул эйч ди сами понимаете какое. Хочу чтобы в мпег сохраняла.
    И вторая задача: камера 8 мп, фотки в целом неплохие - разрешение 3264х1840, но фотка сохраняется в жипег размером ~800 кб, естественно, что детализация такой фотки уменьшается и при маштабировании это очень резко заметно. Как заставить аппарат не сжимать фотки?
    Спасибо, пожалуйста.
  15. 18 Января 2012 Срд 11:54:56
    Для того чтобы нарисовать луч лазера будем "пошагово" перемещаться в соседнюю ячейку двигаясь под заданным углом к оси X. Ось X совпадает с декартовой, ось Y направлена противоположно соответствующей декартовой.

    Проекция шагового смещения на оси не должна превышать размера ячейки. В нашем случае это 64 условные единицы.

    Получаем таблицу из трех столбцов



    Соответственно метод nextPosition класса LaserLineBuilder переписываем

    Код:
       private void nextPosition(Point position, final int angle) {
          // в зависимости от угла лазера к оси Y изменяем координаты объекта position
          switch (angle) {
          case DynamicGameObject.DEG_0:
             position.x = position.x + CELL_SIZE;
             break;
          case DynamicGameObject.DEG_15:
             position.x = position.x + CELL_SIZE ;
             position.y = position.y + (int) (CELL_SIZE*0.268);
             break;
          case DynamicGameObject.DEG_30:
             position.x = position.x + CELL_SIZE ;
             position.y = position.y + (int) (CELL_SIZE*0.577);
             break;
          case DynamicGameObject.DEG_45:
             position.x = position.x + CELL_SIZE ;
             position.y = position.y + CELL_SIZE;
             break;
          case DynamicGameObject.DEG_60:
             position.x = position.x + (int) (CELL_SIZE*0.577) ;
             position.y = position.y + CELL_SIZE;
             break;
          case DynamicGameObject.DEG_75:
             position.x = position.x + (int) (CELL_SIZE*0.268) ;
             position.y = position.y + CELL_SIZE;
             break;
          case DynamicGameObject.DEG_90:
             position.y = position.y + CELL_SIZE;
             break;
          case DynamicGameObject.DEG_105:
             position.x = position.x - (int) (CELL_SIZE*0.268) ;
             position.y = position.y + CELL_SIZE;
             break;
          case DynamicGameObject.DEG_120:
             position.x = position.x - (int) (CELL_SIZE*0.577) ;
             position.y = position.y + CELL_SIZE;
             break;
          case DynamicGameObject.DEG_135:
             position.x = position.x - CELL_SIZE ;
             position.y = position.y + CELL_SIZE;
             break;
          case DynamicGameObject.DEG_150:
             position.x = position.x - CELL_SIZE ;
             position.y = position.y + (int) (CELL_SIZE*0.577);
             break;
          case DynamicGameObject.DEG_165:
             position.x = position.x - CELL_SIZE ;
             position.y = position.y + (int) (CELL_SIZE*0.268);
             break;
          case DynamicGameObject.DEG_180:
             position.x = position.x - CELL_SIZE ;
             break;
          case DynamicGameObject.DEG_195:
             position.x = position.x - CELL_SIZE ;
             position.y = position.y - (int) (CELL_SIZE*0.268);
             break;
          case DynamicGameObject.DEG_210:
             position.x = position.x - CELL_SIZE ;
             position.y = position.y - (int) (CELL_SIZE*0.577);
             break;
          case DynamicGameObject.DEG_225:
             position.x = position.x - CELL_SIZE ;
             position.y = position.y - CELL_SIZE;
             break;
          case DynamicGameObject.DEG_240:
             position.x = position.x - (int) (CELL_SIZE*0.577) ;
             position.y = position.y - CELL_SIZE ;
             break;
          case DynamicGameObject.DEG_255:
             position.x = position.x - (int) (CELL_SIZE*0.268) ;
             position.y = position.y - CELL_SIZE;
             break;
          case DynamicGameObject.DEG_270:
             position.y = position.y - CELL_SIZE;
             break;
          case DynamicGameObject.DEG_285:
             position.x = position.x + (int) (CELL_SIZE*0.268) ;
             position.y = position.y - CELL_SIZE ;
             break;
          case DynamicGameObject.DEG_300:
             position.x = position.x + (int) (CELL_SIZE*0.577) ;
             position.y = position.y - CELL_SIZE ;
             break;
          case DynamicGameObject.DEG_315:
             position.x = position.x + CELL_SIZE ;
             position.y = position.y - CELL_SIZE ;
             break;
          case DynamicGameObject.DEG_330:
             position.x = position.x + CELL_SIZE ;
             position.y = position.y - (int) (CELL_SIZE*0.577) ;
             break;
          case DynamicGameObject.DEG_345:
             position.x = position.x + CELL_SIZE ;
             position.y = position.y - (int) (CELL_SIZE*0.268) ;
             break;
          default:
             break;
          }

       }


    Где величина CELL_SIZE это размер ячейки

    private static final int CELL_SIZE = 64;
  16. 18 Января 2012 Срд 23:19:10
    Ну это всё клёво, а как насчет моих вопросов?
На страницу: Назад  1, 2, 3,
, 5 ... 13, 14, 15  Вперёд