/** * gts_triangle_is_ok: * @t: a #GtsTriangle. * * Returns: %TRUE if @t is a non-degenerate, non-duplicate triangle, * %FALSE otherwise. */ gboolean gts_triangle_is_ok (GtsTriangle * t) { g_return_val_if_fail (t != NULL, FALSE); g_return_val_if_fail (t->e1 != NULL, FALSE); g_return_val_if_fail (t->e2 != NULL, FALSE); g_return_val_if_fail (t->e3 != NULL, FALSE); g_return_val_if_fail (t->e1 != t->e2 && t->e1 != t->e3 && t->e2 != t->e3, FALSE); g_return_val_if_fail (gts_segments_touch (GTS_SEGMENT (t->e1), GTS_SEGMENT (t->e2)), FALSE); g_return_val_if_fail (gts_segments_touch (GTS_SEGMENT (t->e1), GTS_SEGMENT (t->e3)), FALSE); g_return_val_if_fail (gts_segments_touch (GTS_SEGMENT (t->e2), GTS_SEGMENT (t->e3)), FALSE); g_return_val_if_fail (GTS_SEGMENT (t->e1)->v1 != GTS_SEGMENT (t->e1)->v2, FALSE); g_return_val_if_fail (GTS_SEGMENT (t->e2)->v1 != GTS_SEGMENT (t->e2)->v2, FALSE); g_return_val_if_fail (GTS_SEGMENT (t->e3)->v1 != GTS_SEGMENT (t->e3)->v2, FALSE); g_return_val_if_fail (GTS_OBJECT (t)->reserved == NULL, FALSE); g_return_val_if_fail (!gts_triangle_is_duplicate (t), FALSE); return TRUE; }
static PyObject* touches(PygtsSegment *self, PyObject *args) { PyObject *s_; GtsSegment *s; SELF_CHECK /* Parse the args */ if(! PyArg_ParseTuple(args, "O", &s_) ) { return NULL; } /* Convert to PygtsObjects */ if(!pygts_segment_check(s_)) { PyErr_SetString(PyExc_TypeError,"expected a Segment"); return NULL; } s = PYGTS_SEGMENT_AS_GTS_SEGMENT(s_); if(gts_segments_touch(PYGTS_SEGMENT_AS_GTS_SEGMENT(self),s)) { Py_INCREF(Py_True); return Py_True; } else { Py_INCREF(Py_False); return Py_False; } }