Вычисление угла между строкой определяется двумя точками

У вас не будет доступа к объекту TestFile, поскольку схема создается во время выполнения, а не предварительно компилируется. Если вы хотите сохранить этот POJO, вам понадобится конструктор для public TestFile(GenericRecord avroRecord)

. Вам нужно будет создать GenericRecord, используя этот объект Schema, так же, как если бы вы анализировали его из Строка или файл.

Например,

Schema schema = SchemaBuilder.record("TestFile")
            .namespace("com.example.kafka.data.ingestion.model")
            .fields()
            .requiredLong("date")
            .requiredInt("counter")
            .requiredString("mc")
            .endRecord();

GenericRecord entry1 = new GenericData.Record(schema);
entry1.put("date", 1L);
entry1.put("counter", 2);
entry1.put("mc", "3");

// producer.send(new ProducerRecord<>(topic, entry1);

Полный пример Кафки доступен из Confluent

Если вы не указали обязательное поле, оно Я выдам ошибку, и значения типов не проверяются (я мог бы поставить "counter", "2", и он отправил бы строковое значение (мне кажется, это ошибка). По сути, GenericRecord == HashMap с дополнительным преимуществом требуемых / обнуляемых полей.

И вам нужно будет настроить сериализатор Avro, такой как Confluent, для которого требуется запуск реестра реестра, или версию, подобную Cloudera показывает

[1117 В противном случае вам необходимо преобразовать объект Avro в byte[] (как показано в вашей ссылке и просто использовать ByteArraySerializer

38
задан N.N. 18 October 2011 в 10:18
поделиться

2 ответа

Допущения: x - горизонтальная ось, увеличивается при движении слева направо. y - вертикальная ось, увеличивается снизу вверх. (touch_x, touch_y) - точка , выбранная пользователем. (center_x, center_y) - точка в центре экрана . тета отсчитывается против часовой стрелки от оси + x . Затем:

delta_x = touch_x - center_x
delta_y = touch_y - center_y
theta_radians = atan2(delta_y, delta_x)

Edit : вы упомянули в комментарии, что y увеличивается сверху вниз. В этом случае ,

delta_y = center_y - touch_y

Но было бы правильнее описать это как выражение (touch_x, touch_y) в полярных координатах относительно (center_x, center_y) . Как упоминал ChrisF, идея использования «угла между двумя точками» не совсем ясна.

62
ответ дан 27 November 2019 в 03:10
поделиться

в андроиде я сделал это использование kotlin:

private fun angleBetweenPoints(a: PointF, b: PointF): Double {
        val deltaY = abs(b.y - a.y)
        val deltaX = abs(b.x - a.x)
        return Math.toDegrees(atan2(deltaY.toDouble(), deltaX.toDouble()))
    }
0
ответ дан 27 November 2019 в 03:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: