本文整理汇总了Golang中github.com/janelia-flyem/dvid/dvid.Point3d.Equals方法的典型用法代码示例。如果您正苦于以下问题:Golang Point3d.Equals方法的具体用法?Golang Point3d.Equals怎么用?Golang Point3d.Equals使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/janelia-flyem/dvid/dvid.Point3d
的用法示例。
在下文中一共展示了Point3d.Equals方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: move
// Moves element position as well as relationships.
func (elems *Elements) move(from, to dvid.Point3d, deleteElement bool) (moved *Element, changed bool) {
for i, elem := range *elems {
if from.Equals(elem.Pos) {
changed = true
(*elems)[i].Pos = to
moved = (*elems)[i].Copy()
if deleteElement {
(*elems)[i] = (*elems)[len(*elems)-1] // Delete without preserving order.
*elems = (*elems)[:len(*elems)-1]
break
}
}
}
// Check relationships for any moved points.
for i, elem := range *elems {
// Move any relationship with given pt.
for j, r := range elem.Rels {
if from.Equals(r.To) {
r.To = to
(*elems)[i].Rels[j] = r
changed = true
}
}
}
return
}
示例2: deleteElementInLabel
func (d *Data) deleteElementInLabel(ctx *datastore.VersionedCtx, batch storage.Batch, pt dvid.Point3d) error {
labelData := d.GetSyncedLabelblk()
if labelData == nil {
return nil // no synced labels
}
label, err := labelData.GetLabelAtPoint(ctx.VersionID(), pt)
if err != nil {
return err
}
tk := NewLabelTKey(label)
elems, err := getElementsNR(ctx, tk)
if err != nil {
return fmt.Errorf("err getting elements for label %d: %v\n", label, err)
}
// Note all elements to be deleted.
var delta DeltaModifyElements
var toDel []int
for i, elem := range elems {
if pt.Equals(elem.Pos) {
delta.Del = append(delta.Del, ElementPos{Label: label, Kind: elem.Kind, Pos: elem.Pos})
toDel = append(toDel, i)
}
}
if len(toDel) == 0 {
return nil
}
// Delete them from high index to low index due while reusing slice.
for i := len(toDel) - 1; i >= 0; i-- {
d := toDel[i]
elems[d] = elems[len(elems)-1]
elems[len(elems)-1] = ElementNR{}
elems = elems[:len(elems)-1]
}
// Put the modified list of elements
if err := putBatchElements(batch, tk, elems); err != nil {
return err
}
// Notify any subscribers of label annotation changes.
evt := datastore.SyncEvent{Data: d.DataUUID(), Event: ModifyElementsEvent}
msg := datastore.SyncMessage{Event: ModifyElementsEvent, Version: ctx.VersionID(), Delta: delta}
if err := datastore.NotifySubscribers(evt, msg); err != nil {
return err
}
return nil
}
示例3: deleteRel
func (elems *Elements) deleteRel(pt dvid.Point3d) (changed bool) {
for i, elem := range *elems {
// Remove any relationship with given pt.
var todel []int
for j, r := range elem.Rels {
if pt.Equals(r.To) {
todel = append(todel, j)
}
}
if len(todel) > 0 {
(*elems)[i].Rels = elem.Rels.delete(todel)
changed = true
}
}
return
}
示例4: delete
// Deletes element position as well as relationships that reference that element.
func (elems *ElementsNR) delete(pt dvid.Point3d) (deleted *ElementNR, changed bool) {
// Delete any elements at point.
var cut = -1
for i, elem := range *elems {
if pt.Equals(elem.Pos) {
cut = i
break
}
}
if cut >= 0 {
deleted = (*elems)[cut].Copy()
changed = true
(*elems)[cut] = (*elems)[len(*elems)-1] // Delete without preserving order.
*elems = (*elems)[:len(*elems)-1]
}
return
}
示例5: TestSetMetadata
func TestSetMetadata(t *testing.T) {
datastore.OpenTest()
defer datastore.CloseTest()
uuid, _ := initTestRepo()
server.CreateTestInstance(t, uuid, "imagetile", "tiles", dvid.Config{})
// Store Metadata
url := fmt.Sprintf("%snode/%s/tiles/metadata", server.WebAPIPath, uuid)
server.TestHTTP(t, "POST", url, bytes.NewBufferString(testMetadata))
// Check instance really has it set.
var metadata metadataJSON
respStr := server.TestHTTP(t, "GET", url, nil)
if err := json.Unmarshal(respStr, &metadata); err != nil {
t.Fatalf("Couldn't parse JSON response to metadata request (%v):\n%s\n", err, respStr)
}
expectMin := dvid.Point3d{0, 0, 0}
expectMax := dvid.Point3d{5, 5, 4}
if !expectMin.Equals(metadata.MinTileCoord) {
t.Errorf("Expected min tile coord %s, got %s\n", expectMin, metadata.MinTileCoord)
}
if !expectMax.Equals(metadata.MaxTileCoord) {
t.Errorf("Expected max tile coord %s, got %s\n", expectMax, metadata.MaxTileCoord)
}
tileSpec, err := parseTileSpec(metadata.Levels)
if err != nil {
t.Errorf("Error parsing returned tile level spec:\n%v\n", metadata.Levels)
}
if len(tileSpec) != 4 {
t.Errorf("Bad tile spec load: only %d elements != 4\n", len(tileSpec))
}
if tileSpec[2].Resolution.GetMax() != 40.0 {
t.Errorf("Bad tile spec at level 2: %v\n", tileSpec[2])
}
if tileSpec[3].TileSize.Value(2) != 512 {
t.Errorf("Bad tile spec at level 3: %v\n", tileSpec[3])
}
}
示例6: deleteElementInTags
// delete all reference to given element point in the slice of tags.
// This is private method and assumes outer locking.
func (d *Data) deleteElementInTags(ctx *datastore.VersionedCtx, batch storage.Batch, pt dvid.Point3d, tags []Tag) error {
for _, tag := range tags {
// Get the elements in tag.
tk, err := NewTagTKey(tag)
if err != nil {
return err
}
elems, err := getElementsNR(ctx, tk)
if err != nil {
return err
}
// Note all elements to be deleted.
var toDel []int
for i, elem := range elems {
if pt.Equals(elem.Pos) {
toDel = append(toDel, i)
}
}
if len(toDel) == 0 {
continue
}
// Delete them from high index to low index due while reusing slice.
for i := len(toDel) - 1; i >= 0; i-- {
d := toDel[i]
elems[d] = elems[len(elems)-1]
elems[len(elems)-1] = ElementNR{}
elems = elems[:len(elems)-1]
}
// Save the tag.
if err := putBatchElements(batch, tk, elems); err != nil {
return err
}
}
return nil
}
示例7: blockSize
// blockSize is either defined by any synced labelblk or by the default block size.
// Also checks to make sure that synced data is consistent.
func (d *Data) blockSize() dvid.Point3d {
if d.cachedBlockSize != nil {
return *d.cachedBlockSize
}
var bsize dvid.Point3d
d.cachedBlockSize = &bsize
if lb := d.GetSyncedLabelblk(); lb != nil {
bsize = lb.BlockSize().(dvid.Point3d)
return bsize
}
if lv := d.GetSyncedLabelvol(); lv != nil {
if len(bsize) != 0 && !bsize.Equals(lv.BlockSize) {
dvid.Errorf("annotations %q is synced to labelblk and labelvol with different block sizes!\n", d.DataName())
} else {
bsize = lv.BlockSize
return bsize
}
}
if len(bsize) != 0 {
bsize = dvid.Point3d{DefaultBlockSize, DefaultBlockSize, DefaultBlockSize}
}
return bsize
}