Скалярное произведение между (c-a) и (b-a) должно быть равно продукту их длин (это означает, что векторы (c-a) и (b-a) выровненные и того же направления). Кроме того, длина (c-a) должна быть меньше чем или равна тому из (b-a). Псевдокод:
# epsilon = small constant
def isBetween(a, b, c):
lengthca2 = (c.x - a.x)*(c.x - a.x) + (c.y - a.y)*(c.y - a.y)
lengthba2 = (b.x - a.x)*(b.x - a.x) + (b.y - a.y)*(b.y - a.y)
if lengthca2 > lengthba2: return False
dotproduct = (c.x - a.x)*(b.x - a.x) + (c.y - a.y)*(b.y - a.y)
if dotproduct < 0.0: return False
if abs(dotproduct*dotproduct - lengthca2*lengthba2) > epsilon: return False
return True
| DataDirectory |
- это строка подстановки, поэтому вы можете настроить расположение файла базы данных отдельно .
Итак, вместо:
SqlConnection c = new SqlConnection (
@"Data Source=.\SQLDB; AttachDbFilename=C:\MyDB\Database.mdf;Initial Catalog=Master");
вы делаете следующее:
// Set |DataDirectory| value
AppDomain.CurrentDomain.SetData("DataDirectory", "C:\myDB");
// SQL Connection String with |DataDirectory| substitution string
SqlConnection c = new SqlConnection (
@"Data Source=.\SQLDB; AttachDbFilename=|DataDirectory|\Database.mdf;Initial Catalog=Master");
На социальных форумах MSDN этот ответ можно найти
| DataDirectory | (заключенный в символы вертикальной черты) - строка подстановки, указывающая путь к базе данных. Это устраняет необходимость жестко кодировать полный путь, что приводит к нескольким проблемам, поскольку полный путь к базе данных может быть сериализован в разных местах. DataDirectory также упрощает совместное использование проекта и развертывание приложения.
Например, вместо следующей строки подключения:
"Data Source= c:\program files\MyApp\Mydb.sdf"
Используя DataDirectory, вы можете иметь следующую строку подключения:
“Data Source = |DataDirectory|\Mydb.sdf”
Чтобы установить DataDirectory вызовите метод AppDomain.SetData. Если вы не установите свойство DataDirectory, для доступа к папке базы данных будут применяться следующие правила по умолчанию:
Существует внутренний класс SqlConnectionHelper, который анализирует его и при необходимости создает MDF.
Вот это единственный документ MS, который я могу найти об этом классе и | DataDirectory | макрос: http://msdn.microsoft.com/en-us/library/aa478948.aspx .