proximity_info_params.cpp revision 26c806620c26e048918624367ee624526613b0d2
1/* 2 * Copyright (C) 2013 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17#include "defines.h" 18#include "suggest/core/layout/proximity_info_params.h" 19 20namespace latinime { 21const float ProximityInfoParams::NOT_A_DISTANCE_FLOAT = -1.0f; 22const int ProximityInfoParams::MIN_DOUBLE_LETTER_BEELINE_SPEED_PERCENTILE = 5; 23const float ProximityInfoParams::VERTICAL_SWEET_SPOT_SCALE = 1.0f; 24const float ProximityInfoParams::VERTICAL_SWEET_SPOT_SCALE_G = 0.5f; 25 26/* Per method constants */ 27// Used by ProximityInfoStateUtils::initGeometricDistanceInfos() 28const float ProximityInfoParams::NEAR_KEY_NORMALIZED_SQUARED_THRESHOLD = 4.0f; 29 30// Used by ProximityInfoStateUtils::updateNearKeysDistances() 31const float ProximityInfoParams::NEAR_KEY_THRESHOLD_FOR_DISTANCE = 2.0f; 32 33// Used by ProximityInfoStateUtils::isPrevLocalMin() 34const float ProximityInfoParams::MARGIN_FOR_PREV_LOCAL_MIN = 0.01f; 35 36// Used by ProximityInfoStateUtils::getPointScore() 37const int ProximityInfoParams::DISTANCE_BASE_SCALE = 100; 38const float ProximityInfoParams::NEAR_KEY_THRESHOLD_FOR_POINT_SCORE = 0.6f; 39const int ProximityInfoParams::CORNER_CHECK_DISTANCE_THRESHOLD_SCALE = 25; 40const float ProximityInfoParams::NOT_LOCALMIN_DISTANCE_SCORE = -1.0f; 41const float ProximityInfoParams::LOCALMIN_DISTANCE_AND_NEAR_TO_KEY_SCORE = 1.0f; 42const float ProximityInfoParams::CORNER_ANGLE_THRESHOLD_FOR_POINT_SCORE = M_PI_F * 2.0f / 3.0f; 43const float ProximityInfoParams::CORNER_SUM_ANGLE_THRESHOLD = M_PI_F / 4.0f; 44const float ProximityInfoParams::CORNER_SCORE = 1.0f; 45 46// Used by ProximityInfoStateUtils::refreshSpeedRates() 47const int ProximityInfoParams::NUM_POINTS_FOR_SPEED_CALCULATION = 2; 48 49// Used by ProximityInfoStateUtils::pushTouchPoint() 50const int ProximityInfoParams::LAST_POINT_SKIP_DISTANCE_SCALE = 4; 51 52// Used by ProximityInfoStateUtils::updateAlignPointProbabilities() 53const float ProximityInfoParams::MIN_PROBABILITY = 0.000001f; 54const float ProximityInfoParams::MAX_SKIP_PROBABILITY = 0.95f; 55const float ProximityInfoParams::SKIP_FIRST_POINT_PROBABILITY = 0.01f; 56const float ProximityInfoParams::SKIP_LAST_POINT_PROBABILITY = 0.1f; 57const float ProximityInfoParams::MIN_SPEED_RATE_FOR_SKIP_PROBABILITY = 0.15f; 58const float ProximityInfoParams::SPEED_WEIGHT_FOR_SKIP_PROBABILITY = 0.9f; 59const float ProximityInfoParams::SLOW_STRAIGHT_WEIGHT_FOR_SKIP_PROBABILITY = 0.6f; 60const float ProximityInfoParams::NEAREST_DISTANCE_WEIGHT = 0.5f; 61const float ProximityInfoParams::NEAREST_DISTANCE_BIAS = 0.5f; 62const float ProximityInfoParams::NEAREST_DISTANCE_WEIGHT_FOR_LAST = 0.6f; 63const float ProximityInfoParams::NEAREST_DISTANCE_BIAS_FOR_LAST = 0.4f; 64const float ProximityInfoParams::ANGLE_WEIGHT = 0.90f; 65const float ProximityInfoParams::DEEP_CORNER_ANGLE_THRESHOLD = M_PI_F * 60.0f / 180.0f; 66const float ProximityInfoParams::SKIP_DEEP_CORNER_PROBABILITY = 0.1f; 67const float ProximityInfoParams::CORNER_ANGLE_THRESHOLD = M_PI_F * 30.0f / 180.0f; 68const float ProximityInfoParams::STRAIGHT_ANGLE_THRESHOLD = M_PI_F * 15.0f / 180.0f; 69const float ProximityInfoParams::SKIP_CORNER_PROBABILITY = 0.4f; 70const float ProximityInfoParams::SPEED_MARGIN = 0.1f; 71const float ProximityInfoParams::CENTER_VALUE_OF_NORMALIZED_DISTRIBUTION = 0.0f; 72// TODO: The variance is critical for accuracy; thus, adjusting these parameters by machine 73// learning or something would be efficient. 74const float ProximityInfoParams::SPEEDxANGLE_WEIGHT_FOR_STANDARD_DEVIATION = 0.3f; 75const float ProximityInfoParams::MAX_SPEEDxANGLE_RATE_FOR_STANDARD_DEVIATION = 0.25f; 76const float ProximityInfoParams::SPEEDxNEAREST_WEIGHT_FOR_STANDARD_DEVIATION = 0.5f; 77const float ProximityInfoParams::MAX_SPEEDxNEAREST_RATE_FOR_STANDARD_DEVIATION = 0.15f; 78const float ProximityInfoParams::MIN_STANDARD_DEVIATION = 0.37f; 79const float ProximityInfoParams::STANDARD_DEVIATION_X_WEIGHT_FOR_FIRST = 1.25f; 80const float ProximityInfoParams::STANDARD_DEVIATION_Y_WEIGHT_FOR_FIRST = 0.85f; 81const float ProximityInfoParams::STANDARD_DEVIATION_X_WEIGHT_FOR_LAST = 1.4f; 82const float ProximityInfoParams::STANDARD_DEVIATION_Y_WEIGHT_FOR_LAST = 0.95f; 83const float ProximityInfoParams::STANDARD_DEVIATION_X_WEIGHT = 1.1f; 84const float ProximityInfoParams::STANDARD_DEVIATION_Y_WEIGHT = 0.95f; 85 86// Used by ProximityInfoStateUtils::suppressCharProbabilities() 87const float ProximityInfoParams::SUPPRESSION_LENGTH_WEIGHT = 1.5f; 88const float ProximityInfoParams::MIN_SUPPRESSION_RATE = 0.1f; 89const float ProximityInfoParams::SUPPRESSION_WEIGHT = 0.5f; 90const float ProximityInfoParams::SUPPRESSION_WEIGHT_FOR_PROBABILITY_GAIN = 0.1f; 91const float ProximityInfoParams::SKIP_PROBABALITY_WEIGHT_FOR_PROBABILITY_GAIN = 0.3f; 92 93// Used by ProximityInfoStateUtils::getMostProbableString() 94const float ProximityInfoParams::DEMOTION_LOG_PROBABILITY = 0.3f; 95 96// Used by ProximityInfoStateUtils::updateSampledSearchKeySets() 97// TODO: Investigate if this is required 98const float ProximityInfoParams::SEARCH_KEY_RADIUS_RATIO = 0.95f; 99 100// Used by ProximityInfoStateUtils::calculateBeelineSpeedRate() 101const int ProximityInfoParams::LOOKUP_RADIUS_PERCENTILE = 50; 102const int ProximityInfoParams::FIRST_POINT_TIME_OFFSET_MILLIS = 150; 103const int ProximityInfoParams::STRONG_DOUBLE_LETTER_TIME_MILLIS = 600; 104 105} // namespace latinime 106